java – Spring Security – BcryptPasswordEncoder
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Security – BcryptPasswordEncoder,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1267字,纯文字阅读大概需要2分钟。
内容图文
![java – Spring Security – BcryptPasswordEncoder](/upload/InfoBanner/zyjiaocheng/734/d841039f4b464866bcbb9a66930a5764.jpg)
我在我们的应用程序中使用Spring安全性,并希望使用存储在数据库中的密码验证用户输入以获取更改密码选项.
密码在DB中按如下方式存储.
user.setPassword(new BCryptPasswordEncoder().encode("<userPassword>"));
这里用户输入的密码使用上述逻辑编码并存储在DB中.现在我只是想从用户那里获取更改密码的密码.从用户获取密码后,我使用上述逻辑进行编码,并尝试与DB进行比较.即使我使用相同的编码逻辑,编码值似乎也不同.
我在WebSecurityConfig中的配置:
@Autowired
public void configAuthentication(final AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
我不确定比较有什么问题.
解决方法:
The encoded value seems to be different even I use the same logic for
encoding.
Bcrypt算法使用内置的salt值,每次都不同.所以,是的,即使对于相同的Clear Text,相同的编码过程也会生成不同的Cipher文本.
After getting the password from user I encode using the above logic
and try to compare with the DB
不要编码原始密码.假设rawPassword是客户端提供给您的密码,encodedPassword是数据库中编码的存储密码.然后,使用PasswordEncoder#matches方法,而不是编码rawPassword并使用String#equals比较结果:
PasswordEncoder passwordEnocder = new BCryptPasswordEncoder();
if (passwordEncoder.matches(rawPassword, encodedPassword)) {
System.out.println("Matched!");
}
内容总结
以上是互联网集市为您收集整理的java – Spring Security – BcryptPasswordEncoder全部内容,希望文章能够帮你解决java – Spring Security – BcryptPasswordEncoder所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。