2010-04-27 105 views
3

我想設置彈簧安全3來驗證用戶對我的hibernate 3數據庫。我只在數據庫中存儲密碼的sha1哈希(不是純文本)。春季安全數據庫身份驗證瓦特/休眠和哈希密碼?

我看過thisthis,它告訴我實現我自己的UserDetailsS​​ervice。不幸的是,loadUserByUsername吐出的UserDetails似乎需要明文密碼,這是我沒有的。

這是如何處理的?春季安全實際上可以做我需要的嗎?我錯過了什麼嗎?

回答

3

當您設置UserDetailsS​​ervice時,spring會使用它來加載用戶,然後將它們與登錄信息進行比較。這意味着它會比較密碼。 但是,您可以配置一個密碼編碼器:Doc: Adding a Password Encoder

,或者你只是寫自己的AuthenticationManager or AuthenticationProvider它加載用戶,並決定,如果用戶成功登錄了。只是實現的接口 的AuthenticationProvider和設置配置

<authentication-manager> 
    <authentication-provider ref="myAuthenticationProvider"/> 
</authentication-manager> 

<bean id="myAuthenticationProvider" 
    class="stackoverflow.SuperduperMegaAuthenticationProvider"> 
</bean>