Bcrypt自定义密码配置

我正在更改密码,然后转发到/

loginuser并重定向到用户仪表板。自从我是一个初学者以来,我就已经通过httpbasic身份验证来确保这一点,我在hibernate状态下使用createNativeSQLQuery并从数据库中获取结果。我必须实现任何UserDetailsS​​ervice接口Spring

Security吗?我的目标是仅实现加密密码并将其存储在数据库中。我面临的问题是,我添加了一个bean配置,例如,

@Bean

public PasswordEncoder customPasswordEncoder() {

return new BCryptPasswordEncoder(){

@Override

public String encode(CharSequence rawPassword) {

return BCrypt.hashpw(rawPassword.toString(), BCrypt.gensalt(4));

}

@Override

public boolean matches(CharSequence rawPassword, String encodedPassword) {

return BCrypt.checkpw(rawPassword.toString(), encodedPassword);

}

};

}

我不知道为什么会抛出这个异常。我们应该对盐弹进行硬编码吗?

java.lang.IllegalArgumentException: Invalid salt

at org.springframework.security.crypto.bcrypt.BCrypt.hashpw(BCrypt.java:552) ~[spring-security-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]

at org.springframework.security.crypto.bcrypt.BCrypt.checkpw(BCrypt.java:659) ~[spring-security-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]

at com.bootapp.FullTimeEquivalents.config.PasswordEncoderConfig$1.matches(PasswordEncoderConfig.java:29) ~[classes/:na]

回答:

@Autowired

DataSource dataSource;

@Bean

public PasswordEncoder passwordEncoder()

{

return new BCryptPasswordEncoder();

}

@Override

protected void configure(AuthenticationManagerBuilder auth) throws Exception {

auth.jdbcAuthentication().dataSource(dataSource).passwordEncoder(passwordEncoder());

}

以上是 Bcrypt自定义密码配置 的全部内容, 来源链接: utcz.com/qa/403049.html

回到顶部