2010-09-09 133 views
1

企業用戶名和用戶名的組合在用戶表中是唯一的。用戶使用Spring Security進行身份驗證BY用戶名查詢

我知道spring提供了一種爲認證編寫自定義查詢的機制。

<bean id="authenticationDao" 
    class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> 
    <property name="dataSource" ref bean="dataSource" /> 
    <property name="usersByUsernameQuery"> 
     <value> 
      SELECT username,password,enabled 
      FROM User WHERE username=? and corporateId=? 
     </value> 
    </property> 
</bean> 

但問題是我們在查詢中有兩個綁定變量而不是一個。我不知道如何在這個db結構中使用spring安全框架。 用戶表的主鍵是UserId。是否有任何把預處理器調用認證方法之前,我可以通過用戶名和corporateId組合獲取userId,然後使用這個SELECT用戶名,密碼,啓用 從用戶WHERE userid =?查詢。

任何幫助將非常appericated。

回答

0

我想你需要自己的認證供應商,因爲你打算嘗試去匹配用戶名,密碼及企業標識,一旦認證成功,userDetailsS​​ervice就返回對象。

看看這個問題的答案,我認爲它會導致你在正確的道路

Creating a custom authentication with Acegi/Spring Security

0

如果默認JdbcDaoImpl不能滿足你的需求,你可以實現你自己的UserDetailsService

<bean id="authenticationDao" 
    class="... your implementation class ..." /> 
相關問題