方式一,在 application.properties
spring.security.user.name=user
spring.security.user.password=123321
方式二,编写实现类继承WebSecurityConfigurerAdapter
类图如下:
简单案例(不实用,只是举个例子):
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 创建密码解析器
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
// 对密码进行加密
String newPassword = bCryptPasswordEncoder.encode("996");
//user用户名、newPassword密码、admin角色
auth.inMemoryAuthentication().withUser("user").password(newPassword).roles("admin");
}
}
测试登录的时候,发现报错There is no PasswordEncoder mapped for the id “null”,表示没有PasswordEncoder的这个接口,因为加密密码的时候需要用到,既然没有那就创建一个出来:
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
测试结果:
方式三,自定义实现类设置
第一步:创建配置类,设置使用那个userDetailsService实现类
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Resource
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
第二步:编写实现类,返回User对象,User对象有用户名密码和操作权限
测试结果: