Client Controller SysLoginService ThreadLocal AuthManager UserDetailsService PasswordService TokenService Redis SysUserService SecurityUtils 1. POST /login {username,password} 2. login(username,password) 3. loginPreCheck() 抛出UserNotExistsException 返回错误(400) alt [用户名或密码为空] 4. setContext(authenticationToken) 5. authenticate(authenticationToken) 6. loadUserByUsername 7. selectUserByUseNo() 8. validate(user) 9. getContext() 返回原始凭证 10. matchesPassword() 抛出BadCredentialsException 认证失败 抛出UserPasswordNotMatchException 返回错误(401) alt [密码不匹配] 11. 返回Authentication 12. createToken(loginUser) 13. 存储LoginUser(login_tokens:uuid) 14. 返回JWT 15. clearContext() 16. 返回token 17. 响应Token(200) Client Controller SysLoginService ThreadLocal AuthManager UserDetailsService PasswordService TokenService Redis SysUserService SecurityUtils
相关推荐
二哈赛车手8 小时前
新人笔记---ApiFox的一些常见使用出错代码搬运媛8 小时前
Jest 测试框架详解与实现指南栗子~~8 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demoYDS8299 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现counterxing9 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享wangqiaowq9 小时前
windows下nginx的安装之歆9 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇发现一只大呆瓜9 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手Maimai1080810 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案未若君雅裁10 小时前
MyBatis 一级缓存、二级缓存与清理机制