若依框架实现动态失效时间JWT Token的实践指南

发布于:2025-02-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、功能需求背景

在前后端分离架构中,JWT(JSON Web Token)作为无状态认证方案被广泛使用。若依(RuoYi)框架的TokenService默认采用固定失效时间策略,但在实际开发中常需要根据业务场景动态调整Token有效期。本接口通过可配置参数实现了灵活的Token失效时间控制。

二、代码实现解析

核心代码结构

    /**
     * 用于生成指定失效时间的Token
     *
     * @param expireMinutes Token失效时间(分钟),必填参数
     * @return 返回包含Token的AjaxResult对象
     */
    @GetMapping("/generateToken")
    public AjaxResult generateToken(@RequestParam(name = "expire") Integer expireMinutes) {
        // 原有参数有效性校验
        if (expireMinutes <= 0) {
            return AjaxResult.error("失效时间必须大于0分钟");
        }

        LoginUser testUser = new LoginUser();
        testUser.setUserId(1L);
        SysUser sysUser = new SysUser();
        sysUser.setUserName("admin");
        testUser.setUser(sysUser);
        testUser.setDeptId(103L);

        // 生成动态失效时间的Token
        String jwtToken = tokenService.createFixedToken(testUser, expireMinutes);

        // 构造带参数的返回消息
        String message = String.format("操作成功,失效时间%d分钟", expireMinutes);
        return AjaxResult.success(message, jwtToken);
    }

三、接口使用示例

请求方式:
GET http://localhost:8080/generateToken?expire=5
成功响应:
{
    "msg": "操作成功,失效时间5分钟",
    "code": 200,
    "data": "eyJhbGciO...(JWT内容)"
}
错误响应示例:
{
    "msg": "失效时间必须大于0分钟",
    "code": 500,
    "data": null
}