spring security登录认证流程
1、前端携带用户名和面膜发送请求,controller接收到后,调用service的login方法
2、根据传过来的用户名和密码生成UsernamePasswordAuthenticationToken(这个token里面存放了用户名和密码)
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(),user.getPassword());
3、根据上面获得的token进行认证,如果认证失败为空,否则获取认证对象authenticate的Principal里面存了这个用户的所有信息。
步骤是:1、我们需要定义一个类去实现UserDetailsService接口的loadUserByUsername方法
@Servicepublic class UserDetailsServiceImpl implements UserDetailsService { @Autowired private UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //根据用户名查询用户信息 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getUserName,username); User user = userMapper.selectOne(queryWrapper); //判断是否查到用户 如果没查到抛出异常 if(Objects.isNull(user)){ throw new RuntimeException("用户不存在"); } //返回用户信息 // TODO 查询权限信息封装 return new LoginUser(user); }}