ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ruoyi登录功能后端代码调用

ruoyi登录功能后端代码调用

目录

登录流程总梳理​编辑

一.请求入口:SysLoginController

二.核心登录逻辑:SysLoginService​

1.验证码校验核心实现:​

2.登录前置校验核心实现:

3.用户验证核心实现:

4.更新登录信息:

5.生成token:​

三.登录成功后的访问

1.前端请求时携带token:​

2.token验证:

3.token续期:


登录流程总梳理

一.请求入口:SysLoginController

前端登录JSON 数据接收

二.核心登录逻辑:SysLoginService

可细分为以下五步来看

1.验证码校验核心实现:

1.前端把 {uuid, code, username, password} 发到/login

2.后端调validateCaptcha(username, code, uuid)

3.验证码通过,才会继续走 “用户名+密码” 认证链。

4.任何一步失败,都通过AsyncManager异步写一条登录日志到数据库,并抛出对应异常,由全局异常处理器转换成 JSON 返给前端。

2.登录前置校验核心实现:

执行顺序:本方法 → 后续数据库查询与密码校验。任何分支throw都会由全局异常处理器统一封装成{code:500, msg:"对应提示"}返回,同时异步写入sys_logininfor失败日志。

3.用户验证核心实现:

AuthenticationManager调用UserDetailsServiceImpl.loadUserByUsername()从数据库获取用户信息。

4.更新登录信息:

异步记成功日志 + 更新用户最后一次登录信息。
当前登录 IP 与当前时间写回sys_user表对应字段

5.生成token:

生成 UUID 作为 token,设置用户代理信息(IP、浏览器、系统等),缓存LoginUser到 Redis(key:LOGIN_TOKEN_KEY + token)

三.登录成功后的访问

上面后端获取了token接下来,每次请求携带这个 Token(放在请求头 Authorization 中)后,系统会进行一系列后端处理。

1.前端请求时携带token:

后端在JwtAuthenticationTokenFilter.java中有一个过滤器来验证 Token: (这个过滤器把“无状态 JWT”转成“有状态 Spring Security 认证对象”,并负责续期、校验、刷新上下文,是整个系统权限体系的入口闸门。)

其中SecurityContext是 Spring Security 的核心线程级容器,当前请求“谁已登录、拥有哪些权限” 全部放在它里面;一次请求生命周期内,任何地方只要SecurityContextHolder.getContext()就能拿到这套信息,不必再查数据库。

2.token验证:

在TokenService.java中先获取用户登录信息

解析 Token,拿出里面的 UUID。

用 UUID 作为 key,到 Redis 里查 LoginUser 对象。

如果 Redis 找不到(说明登录过期或被清理),则无法通过认。

3.token续期:

续期保证了活跃用户保持登录与闲置账号快速失效。
在以上操作后后续前端访问接口时,会携带 Token,调用getInfo()或getRouters()获取用户信息和路由菜单。

登录功能代码调用泳道图


返回列表