发布时间:2026-02-25 作者:超级管理员 来源:办公室 点击次数: 次
你想了解若依(RuoYi)框架中 JWT 的相关知识,我会从它的作用、核心实现、使用方式等方面为你详细讲解,让你清楚若依框架是如何运用 JWT 来处理身份认证的。
一、JWT 基础与若依框架中的定位
JWT(JSON Web Token)是一种基于 JSON 的轻量级身份认证令牌,在若依框架中,它主要用于前后端分离架构下的无状态身份认证—— 替代传统的 Session 认证,避免服务端存储用户会话信息,同时支持分布式部署(多服务器节点可通过 JWT 直接验证用户身份)。
简单来说,若依框架的 JWT 核心作用是:
-
用户登录成功后,生成包含用户信息的 JWT 令牌返回给前端;
-
前端后续请求携带该令牌,后端通过验证令牌的有效性(是否过期、是否被篡改)来确认用户身份;
-
无需依赖 Session,实现服务端无状态化。
二、若依框架中 JWT 的核心实现
若依框架(以分离版 RuoYi-Vue 为例)的 JWT 核心代码主要在 ruoyi-common 模块的 security 包下,以下是关键部分的拆解和说明:
1. JWT 配置类(JwtConfig)
首先框架会配置 JWT 的核心参数,比如密钥、过期时间等,通常通过配置文件(application.yml)定义:
对应的配置类(简化版):
2. JWT 工具类(JwtTokenUtil)
这是核心工具类,负责生成令牌、验证令牌、解析令牌中的用户信息,若依框架的实现如下(关键方法):
3. JWT 认证过滤器(JwtAuthenticationFilter)
若依框架通过自定义过滤器拦截所有请求,提取并验证 JWT 令牌,核心逻辑:
4. 登录接口集成 JWT
用户登录成功后,框架会调用 JwtTokenUtil 生成令牌并返回:
三、若依框架中 JWT 的使用流程
-
前端:用户输入账号密码登录,后端返回 JWT 令牌,前端将令牌存储在 localStorage/sessionStorage 中;
-
前端请求:后续所有需要认证的请求,在请求头
Authorization 中携带 Bearer {token};
-
后端验证:JWT 过滤器拦截请求,提取令牌并验证有效性,有效则解析用户信息,完成身份认证;
-
权限校验:认证通过后,框架再通过 Spring Security 校验用户的接口访问权限。
四、若依 JWT 的扩展与注意事项
-
令牌刷新:若依默认没有内置刷新逻辑,实际项目中可在令牌快过期时,前端调用刷新接口生成新令牌;
-
密钥安全:生产环境务必修改默认密钥(
jwt.secret),避免被破解;
-
过期时间:可根据业务调整过期时间(如移动端可设更长,管理端设较短);
-
注销登录:JWT 本身无法主动作废,若依通常结合 Redis 存储 “黑名单令牌”,注销时将令牌存入 Redis,验证时先检查是否在黑名单。
总结
-
若依框架的 JWT 核心作用是实现前后端分离下的无状态身份认证,替代传统 Session;
-
核心组件包括:配置类(JwtConfig)、工具类(JwtTokenUtil,负责生成 / 验证 / 解析令牌)、过滤器(JwtAuthenticationFilter,拦截请求验证令牌);
-
核心流程:登录生成令牌 → 前端携带令牌请求 → 后端过滤器验证令牌 → 完成身份认证。
升级后的源码下载:
https://gitee.com/ruoyieleadmin/ruoyi-ele-admin