我正在使用Spring Boot 2.0.5,并使用以下代码进行密码编码。
@Bean
public PasswordEncoder delegatingPasswordEncoder() {
PasswordEncoder defaultEncoder = new StandardPasswordEncoder();
Map<String, PasswordEncoder> encoders = new HashMap<>();
encoders.put("bcrypt", new BCryptPasswordEncoder());
encoders.put("scrypt", new SCryptPasswordEncoder());
DelegatingPasswordEncoder passworEncoder = new DelegatingPasswordEncoder(
"bcrypt", encoders);
passworEncoder.setDefaultPasswordEncoderForMatches(defaultEncoder);
return passworEncoder;
}
顺便说一句,我使用上面的代码从另一个项目中生成了编码密码。因为在我当前的项目中我没有生成编码后的密码,而只是将编码后的密码复制到了我当前的项目数据库中。编码后的密码如下所示。
{bcrypt}$2a$10$DPOPug/9As2jwQzW3Ezr1u3LE31kFaMR/z/8bMpQYHQUJ0b6NyZri
问题是,当我使用密码从生成编码字符串的项目中登录时,它运行良好。但是,当我使用相同的密码从当前项目登录时,它将无法正常工作。请告诉我原因。
答案 0 :(得分:0)
用以下方法替换您的方法。
@Bean
public PasswordEncoder delegatingPasswordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}