由于现在Spring Security 废除了WebSecurityConfigurerAdapter接口,导致之前的AuthenticationManagerBuilder来配置用户认证的方法被不推荐使用了,新版本需要通过自动装配的 UserDetailsService类来实现
@Bean
public UserDetailsService users() {
//PasswordEncoder
BCryptPasswordEncoder passwordEncoder= (BCryptPasswordEncoder)PasswordEncoderFactories.createDelegatingPasswordEncoder();
//users
User.UserBuilder users = User.builder();
UserDetails user = users
.passwordEncoder(passwordEncoder::encode)
.username("1")
.password("123456")
.roles("1")
.build();
return new InMemoryUserDetailsManager(user);
}
同时需要配置一个默认的PasswordEncoder
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
不配置的话spring boot使用默认的密码编码器,而你的用户中使用的却是BCrypt编码器
会报:There is no PasswordEncoder mapped for the id “null” 异常

值得注意的是,现在在users中的passwordEncoder方法需要的是一个encode方法而不是整个对象,从源码中得到的信息

其余和旧版的差不多了
jdbc的我研究完再补
本文介绍如何在Spring Security中配置用户认证,包括使用BCryptPasswordEncoder进行密码加密,并通过UserDetailsService实现用户信息管理。
5317

被折叠的 条评论
为什么被折叠?



