一、认证
1、设置登录的用户名和密码
第一种方式,通过application.properties配置文件进行配置。
#自定义设置登录用户名和密码
spring.security.user.name=jack
spring.security.user.password=123456abc
设置密码后,SpringSecurity就不会再自动生成密码。
第二种方式,通过配置类进行配置。
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("jack")
.password(new BCryptPasswordEncoder().encode("123456"))
.roles("admin");
}
}
新建一个配置类,继承WebSecurityConfigurerAdapter类,并重写其configure方法,通过AuthenticationManagerBuilder 参数可以在内存中设置用户名、密码、角色,这里的密码是加密后的密码。
inMemoryAuthentication 方法表示在内存中存取密码;
passwordEncoder(new BCryptPasswordEncoder()) 是设置加密的方式为bcrypt,也是官方推荐的方式。需要注意的是,虽然后面在设置密码时也设置了加密方式,但SpringSecurity5.0需要设置两次。
显然,前两种设置用户名和密码的方式并不实用,实际我们应该从数据库获取信息,也就是第三种方式。
第三种方式,自定义编写UserDetailsService接口的实现类,从数据库获取数据。
配置类代码:
@Configuration
public class SecurityDetailsConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService myUserDetailsService;
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.