2016-04-21 77 views

回答

1

由于Chamila提到的解决方案将是编写一个自定义组件。但是,用户操作侦听器将无法工作,因为到达侦听器时,域将被处理并从用户名中删除。

因此,它应该是一个Custom Userstore管理器,用于扩展当前的用户存储管理器。请参考this page并编写一个自定义用户管理器(扩展当前用户存储管理器将使事情变得更容易),然后在调用super(String,Object,boolean)之前覆盖其authenticate(String,Object,boolean)方法以检查域名的存在。有关部署自定义用户存储管理器的详细信息,请参阅相同的页面。

1

据我所知,你不能仅仅通过改变配置做到这一点。但是,您可以创建一个自定义组件,其中包含扩展org.wso2.carbon.user.core.listener.UserOperationEventListener的监听器类,并实现其doPreAuthenticate,您可以在其中包含用户存储域的情况下检查用户名,如果不包含用户存储域,则可以检查它。

更新

请参阅pulasthi7的回答,好像customUserStoreManager就是我们需要在这里实现,而不是听众。

+0

编写一个自定义组件是这里的解决方案。但是,用户操作侦听器将无法正常工作,因为到达侦听器时,域将被处理并从用户名中删除,因此它应该是一个自定义用户。请参阅下面的答案。 – pulasthi7

+0

https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common /AbstractUserStoreManager.java#L458-#L500在这里,我没有看到领域从用户名属性下降到达preAuthenticate方法之前,所以它看起来像使用监听器方法应该工作。我相信这不会比编写自定义的userStoreManager复杂 –

相关问题