由于现在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的我研究完再补