Spring Security BCryptPasswordEncoder已插入但不匹配

时间:2017-06-10 09:11:50

标签: java spring spring-mvc security password-encryption

我在Spring MVC上开发了一个小项目。该项目具有帐户表,帐户具有BCryptPasswordEncoder的编码密码。 我使用的是java配置而不是XML配置。

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter 
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}

我获取用户信息并对密码进行编码。

@Autowired
    private PasswordEncoder passwordEncoder;

    String pass=user.getPassword();
    user.setPassword(passwordEncoder.encode(pass));

最后,即使我使用123密码对其进行编码,但

boolean passstate=pe.matches(pass, user.getPassword());

返回false

1 个答案:

答案 0 :(得分:0)

一个常见错误,“ password”列(用户表)的长度小于60,例如密码VARCHAR(45),某些数据库会自动截断数据。因此,您始终会收到“编码后的密码看起来不像BCrypt”的警告。

要解决此问题,请确保“密码”列的长度至少为60。

有关更多详细信息,请检查:https://www.mkyong.com/spring-security/spring-security-encoded-password-does-not-look-like-bcrypt/