2016-04-21 71 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複雜 –

相關問題