Spring Security BCrypt总是寻找“ $ 2a”正则表达式

问题描述 投票:-1回答:1

我正在使用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-boot spring-security bcrypt
1个回答
0
投票

通过默认的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
© www.soinside.com 2019 - 2024. All rights reserved.