2013-10-16 118 views
2

我正在使用spring security來管理用戶在我的項目中登錄/註冊。在三次失敗登錄嘗試後,我需要實現用戶鎖定功能。我所做的是在數據庫的'用戶'表中添加另一個字段'account_non_locked'。如何配置spring security以使用我自定義的UserDetailsManager?

我面臨的問題是春季安全不會更新新添加的列。我深入瞭解了源代碼,發現默認的UserDetailsManager中的sql語句寫爲:

"insert into users (username, password, enabled) values (?,?,?)" 

這解釋了爲什麼它不能識別我的新列。

所以我複製該文件,並更改爲適合我自己的需要,這是CustomUserDetailsManager.java

現在我不能配置Spring Security用我自己定製的UserDetailsManager。配置文件現在是:

<authentication-manager alias="authenticationManager"> 
    <authentication-provider> 
    <password-encoder ref="passwordEncoder" /> 
    <jdbc-user-service id="userDetailsService" data-source-ref="dataSource" /> 
    </authentication-provider> 
</authentication-manager> 
<beans:bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" /> 

我找不到任何示例在線,將正確配置此。請提前幫助和感謝!

回答

0

該部分3.2.4 Using other Authentication Providers涵蓋了如何使用[email protected]來做到這一點。

你的例子看起來像下面這樣:

<authentication-manager alias="authenticationManager"> 
    <authentication-provider user-service-ref="customUserDetailsManager"> 
    <password-encoder ref="passwordEncoder" /> 
    </authentication-provider> 
</authentication-manager> 

<beans:bean id="passwordEncoder" 
    class="org.springframework.security.crypto.password.StandardPasswordEncoder" /> 

<beans:bean id="customUserDetailsManager" 
    class="com.example.CustomUserDetailsManager"> 
    <!-- additional properties --> 
</beans:bean> 
相關問題