我正在使用 Spring StandardPasswordEncoder
在插入数据库之前对密码进行编码。但是当尝试使用相同的密码登录时,我收到无效密码错误。不知道出了什么问题。下面是代码。
安全配置:
<security:authentication-manager id="authMgr">
<security:authentication-provider>
<security:jdbc-user-service
data-source-ref="dataSource" />
<security:password-encoder ref="passwordEncoder"></security:password-encoder>
</security:authentication-provider>
</security:authentication-manager>
<bean id="passwordEncoder class="org.springframework.security.crypto.password.StandardPasswordEncoder">
</bean>
服务层(将数据传递到数据访问层之前进行密码编码)
import org.springframework.security.crypto.password.PasswordEncoder;
@Autowired
private PasswordEncoder passwordEncoder;
user.setPassword(passwordEncoder.encode(newAccountDetails.getPassword()));
userDataAccess.createUser(user);
最佳答案
我相信推荐How to use new PasswordEncoder from Spring Security适用。请参阅此处已接受的答案以获得良好的解释。
我会修改以下答案之一中的建议代码,以更好地适合您当前的设置:
<security:authentication-manager id="authMgr">
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="dataSource" />
<security:password-encoder ref="passwordEncoder"></security:password-encoder>
</security:authentication-provider>
</security:authentication-manager>
<bean id="passwordEncoder class="org.springframework.security.crypto.password.org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
</bean>
关于java - Spring中使用密码编码时用户登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220241/