Spring Security登录的流程
Spring Security登录的流程
1、UsernamePasswordAuthenticationFilter这过滤器开始
attemptAuthentication方法
请求的request中的参数
setDetails(request, authRequest); 是在设置一些seesion的信息
然后进入这个return this.getAuthenticationManager().authenticate(authRequest);
2、ProviderManager进入这个方法进程验证
authenticate方法
第一次进入因为paoviders的参数不符合,从新再次进入
第二进入的时的参数信息
result = provider.authenticate(authentication);进入
3、AbstractUserDetailsAuthenticationProvider对象
authenticate方法
通过用户名和封装好的对象去查找user(UserDetails)这个对象
user = retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);
4、DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider
retrieveUser方法
UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username);
通过自己写的service层并且实现了UserDetailsService接口的方法中去数据库查询该用户
这里过后就获取到了这个查询的user的信息
然后进入
additionalAuthenticationChecks(user, (UsernamePasswordAuthenticationToken) authentication);
这个方法进行密码的校验检查
additionalAuthenticationChecks方法
ProviderManager 一直到这个里面的 authenticate 方法结束,这中间把密码都移除了,估计未来保证安全
最后的这个返回的 result (第二个进入的返回)
然后接着就是第一次进入的返回了
5、AbstractAuthenticationProcessingFilter
后面就该执行以下登录成功后的处理了,比如权限认证
还有其他过滤器的执行了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)