我正在使用Spring Boot实施Spring Security。而且我已经使用BCrypt生成器在线生成了密码。但是,当我尝试登录时,收到错误消息:
2019-10-18 11:10:56.983 WARN 53908 --- [io-9090-exec-10]o.s.s.c.bcrypt.BCryptPasswordEncoder:编码的密码不正确看起来像BCrypt。
[经过一番研究,我发现Spring Security BCrypt中存在一个错误,该错误只寻找“ $ 2a”正则表达式。谁能解释给我解决这些问题?
通过默认的spring支持spring-security-core-5.1.x,通常会生成$ 2a版本的bcrypt
此版本不支持其他版本的BCryptPasswordEncoder。
如果要使用其他版本,则需要升级spring-security-core版本
在pom.xml中添加以下内容
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
然后按如下所示创建您的BCryptPasswordEncoder bean
@Bean(name = "passwordEncoder")
public BCryptPasswordEncoder getPasswordEncoder() {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(BCryptVersion.$2B);
return bCryptPasswordEncoder;
}
您可以在BCryptPasswordEncoder的构造函数中传递所需的版本。
可能的值是
- BCryptVersion。$ 2A
- BCryptVersion。$ 2Y
- BCryptVersion。$ 2B