Spring 安全 BCrypt 总是寻找“$2a”正则表达式
Spring Security BCrypt always look for “$2a” regex
我正在通过 spring 引导实现 spring 安全性。我已经使用 BCrypt 生成器在线生成了密码。但是当我尝试登录时,我收到了错误消息:
2019-10-18 11:10:56.983 WARN 53908 --- [io-9090-exec-10]
o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not
look like BCrypt.
经过一些研究,我发现 Spring Security BCrypt 中存在一个错误,它只查找“$2a”正则表达式。任何人都可以向我解释如何解决这些问题吗?
默认 spring 启动 2.1.x 支持 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.B);
return bCryptPasswordEncoder;
}
您可以在 BCryptPasswordEncoder 的构造函数中传递您想要的版本。
可能的值为
- BCryptVersion.A
- BCryptVersion.Y
- BCryptVersion.B
我正在通过 spring 引导实现 spring 安全性。我已经使用 BCrypt 生成器在线生成了密码。但是当我尝试登录时,我收到了错误消息:
2019-10-18 11:10:56.983 WARN 53908 --- [io-9090-exec-10] o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not look like BCrypt.
经过一些研究,我发现 Spring Security BCrypt 中存在一个错误,它只查找“$2a”正则表达式。任何人都可以向我解释如何解决这些问题吗?
默认 spring 启动 2.1.x 支持 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.B);
return bCryptPasswordEncoder;
}
您可以在 BCryptPasswordEncoder 的构造函数中传递您想要的版本。
可能的值为
- BCryptVersion.A
- BCryptVersion.Y
- BCryptVersion.B