自定义用户认证逻辑
- 处理用户信息获取逻辑-UserDetailsService
用户信息被封装在一个接口里面的UserDetailsService,由SpringSecurity提供,如下:
该接口里面有一个loadUserByUsername方法,传入参数为userName,返回值为userDetails,作用为:根据用户在前面输入用户名,从存储系统(数据库)读取一个用户信息,这个用户信息封装在一个userDetails实现类里面,该方法处理完毕返回以后,SpringSecurity拿着这个用户信息去做一些处理和校验,处理和校验都通过了,会把这个用户信息放到session里面,认为登录成功了,如果通过userName找不到用户信息,就会抛出一个UserNameNotFoundException异常,异常拦截器会处理该异常。开发者可以自定义一个实现UserDetailsService接口的类,来个性化实现里面该接口的loadUserByUsername的方法;如下:
@Component
public class MyUserDetailsService implements UserDetailsService {
private Logger logger = LoggerFac