我确定以前有人问过这个问题,但我找不到任何可以回答这个问题的东西。
使用 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 如何知道我的盐是“盐”——你如何告诉 Spring Security 和 Hibernate 使用相同的盐? 我是否遗漏了有关 Spring Security 如何管理密码的信息?