我敢肯定,這已被問過,但我找不到任何答案這個問題。春季安全與休眠,存儲加密密碼
使用Spring-security,我使用的是密碼編碼器。
<beans:bean class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" id="passwordEncoder"/>
<authentication-manager>
<authentication-provider user-service-ref='CustomUserDetailsService'>
<password-encoder ref="passwordEncoder"/>
</authentication-provider>
</authentication-manager>
在我的一個UserDAOImpl我已經添加用戶時,下面的代碼...
@Override
public void addUser(final User user) {
user.setPassword(passwordEncoder.encodePassword(user.getPassword(), "salt"));
sessionFactory.getCurrentSession().save(user);
}
我的密碼被正確編碼,但總是被解讀爲無效,這有點有意義的,因爲我不不知道Spring會如何知道我的鹽是「鹽」 - 你如何告訴春季安全以及Hibernate使用相同的鹽?我是否缺少有關spring security如何管理密碼的內容?
這些天推薦的選項是使用[BCrypt](http://stackoverflow.com/a/8528804/241990)。只需在你的Hibernate DAO中注入一個'BCryptPasswordEncoder'(或者在內部實例化一個),使用它來創建哈希並使用相同的bean進行驗證。鹽將自動處理。 – 2012-07-07 17:09:18
@LukeTaylor:謝謝你提供的信息。 TODO:建議在文檔中:-) – 2012-07-07 17:21:06