2011-08-23 40 views
4

Spring Security的多個參數與方法定製UserDetialsService在春季安全

public UserDetails loadUserByUsername(String username) 

通常情況下,我們需要創建UserDetailsS​​erviceImpl實現此接口,並提供上述方法實現一個UserDetailsS​​ervice。

在我的應用程序的用戶名也不會是唯一的。它可以在不同的組織中相同。這將是一個獨特的組織。所以我需要通過用戶名和組織來查找用戶詳細信息。

在這種情況下上述的方法將不起作用。我想創建能夠將兩個參數,即用戶名和組織名稱,並獲取用戶信息的方法。

登錄表單將有三個參數的用戶名,單位名和密碼。具有三個I/P參數的認證部分正常工作。

但我不能夠有被稱爲我的自定義方法。

請幫助。

回答

0

我能想到的目前簡單的選擇是串聯組織與用戶名。並添加一個簡單的數據庫功能,這是否在爲每個用戶插入。

在你的數據庫,你可能有:

 
| organisation | username | organisation_username | 

|  IBM  | Jonny |  IBM_Jonny  | 

所以,你會打電話給你的方法與類似:

myDetailsService.loadUserByUsername("IBM_Jonny"); 

或沒有任何對數據庫的修改:

myDetailsService.loadUserByUsername(user.getCompany() + "_" + user.getUsername());