我在我们的应用程序中使用Spring Security,并希望通过在数据库中验证用户输入来实现更改密码选项。
密码在数据库中存储如下:
密码在数据库中存储如下:
user.setPassword(new BCryptPasswordEncoder().encode("<userPassword>"));
在这里,用户输入的密码使用上述逻辑进行编码,并存储在数据库中。现在我只是尝试从用户获取密码以进行更改密码。从用户获取密码后,我使用上述逻辑进行编码并尝试与数据库进行比较。即使我使用相同的编码逻辑,编码后的值似乎也不同。
WebSecurityConfig
的配置如下:
@Autowired
public void configAuthentication(final AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
我不确定比较有什么问题。
String#equals
还是PasswordEncoder#matches
? - Ali Dehghani