随笔记录,待整理
表单认证
- 自定义WebSecurityConfigurer
新建类BrowserSecurityConfigurer继承SpringSecurity的WebSecurityConfigurerAdapter,并将自定义类加上@Configuration注解作为配置类使用。 -
重写configure(HttpSecurity http)方法
http.formLogin()则为表单认证。
image.png
@Configuration
public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.and()
.authorizeRequests()
.anyRequest()
.authenticated();
}
}
此时访问后台接口将会弹出表单登录页面
image.png
自定义用户认证逻辑
- 获取用户信息并处理
使用SpringSecurity的UserDetailsService接口的loadUserByUsername(String username)方法。该方法返回一个UserDetails接口实现的对象。
image.png
- 自定义
UserDetailsService实现
新建MyUserDetailsService实现UserDetailsService,重写loadUserByUsername方法,并为该类打上@Component注解使其成为Spring管理的Bean。
image.png
登录页表单的用户名将传递给username参数接收,我们可以使用接收到的用户名去数据库里查询该用户的数据。
image.png
image.png
此时在该方法中返回的User对象是
org.springframework.security.core.userdetails.User。该类实现了
UserDetails接口。
image.png
- 用户校验逻辑
UserDetails接口提供以下四个方法,自己实现其逻辑:
1.boolean isAccountNonExpired();账户是否过期。
2.boolean isAccountNonLocked();账户是否锁定(账户是否冻结,账户可恢复)。
3.boolean isCredentialsNonExpired();密码是否过期。
4.boolean isEnabled();账户是否可用(用户是否被删除,被删除的账户不可恢复)。
User类有一个7个参数的构造器,其中四个布尔参数对应上述四个校验结果。
image.png
密码加密及解密
SpringSecurity使用org.springframework.security.crypto.password.PasswordEncoder
代码
我们调用
encode方法将用户传过来的密码加密。SpringSecurity调用matches方法校验密码。
若让框架按加密方式校验用户输入的密码,需要配置加密实现类。
文档说明
image.png











网友评论