java Spring Security BCrypt始终查找“$2a”正则表达式

ukdjmx9f  于 2023-08-01  发布在  Java
关注(0)|答案(1)|浏览(131)

我正在使用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中有一个bug,其中BCrypt只查找$2a正则表达式。有谁能告诉我如何解决这些问题吗?

rryofs0p

rryofs0p1#

默认情况下Spring Boot2.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.$2B);
    return bCryptPasswordEncoder;

}

您可以在BCryptPasswordEncoder的构造函数中传递您想要的版本。

可能的值为

  • BCryptVersion.$2A
  • BCryptVersion.$2Y
  • BCryptVersion.$2B

相关问题