2 回答
TA贡献1876条经验 获得超7个赞
我不知道你到底想要什么,是你想要在存储到数据库之前散列用户的密码?您创建了一个转换器并想使用它?要做的是添加@Convert(converter = JPACryptoConverter.class)
@Entity
class UserEntity {
@Column(name = "pw")
@Convert(converter = JPACryptoConverter.class)
private String pw;
}
并请从您的 JPACryptoConverter 中删除 @Converter。它只是:
public class JPACryptoConverter implements AttributeConverter<String, String>...
不是:
@Converter
public class JPACryptoConverter implements AttributeConverter<String, String>...
//To using Strong pw hash
public static String hash(String plainPassword) {
if (StringUtils.isBlank(plainPassword)) {
throw new EmptyPasswordException("Password could not be empty");
}
return BCrypt.hashpw(plainPassword, BCrypt.gensalt());
}
public static boolean checkPassword(String plainPassword, String hash) {
return BCrypt.checkpw(plainPassword, hash);
}
TA贡献1856条经验 获得超5个赞
如果用于 SpringBoot 中的身份验证,那么您应该使用 WebSecurityConfigurereAdapter 并实现配置方法。并有这样的事情:
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsServiceImpl).passwordEncoder(passwordEncoder());
}
private PasswordEncoder passwordEncoder() {
return new PasswordEncoder() {
@Override
public String encode(CharSequence charSequence) {
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence, String s) {
return charSequence.toString().equals(s);
}
};
}
添加回答
举报