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

news/2025/2/22 18:06:39

一、功能需求背景

在前后端分离架构中,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
}

http://www.niftyadmin.cn/n/5862611.html

相关文章

GUI编程(window系统→Linux系统)

最近有个项目需要将windows系统的程序往Linux系统上面移植&#xff0c;由于之前程序没有考虑过多平台兼容的问题&#xff0c;导致部分功能不可用以下是对近期遇到的问题的总结&#xff0c;以及相应的解决方案和经验分享。 1. Python 模块安装与管理 在 Linux 系统中&#xff0…

C#设计模式 学习笔记

概述 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结 本文是《C#设计模式》书籍的学习笔记 面向对象设计原则 单一职责原则 一个对象应该只包含单一的职责&#xff0c;并且该职责被完整地封装在一个类中 开闭原则 对扩展开放&#xff0c;对…

java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)

我们再启动应用并获取api密钥后就可以对它发送请求了&#xff0c;但是官方文档对于如何进行多轮对话以及怎么自定义参数并没有说的很清楚&#xff0c;给的模板也没有java的&#xff0c;因此我们需要自己实现。 import org.json.JSONArray; import org.json.JSONObject;import j…

设计模式教程:迭代器模式(Iterator Pattern)

迭代器模式&#xff08;Iterator Pattern&#xff09;是设计模式中的一种行为型模式&#xff0c;它允许顺序访问一个集合对象中的元素&#xff0c;而无需暴露集合对象的内部结构。换句话说&#xff0c;迭代器模式提供了一个方法&#xff0c;能让你遍历集合中的元素&#xff0c;…

给老系统做个安全检查——Burp SqlMap扫描注入漏洞

背景 在AI技术突飞猛进的今天&#xff0c;类似Cursor之类的工具已经能写出堪比大部分程序员水平的代码了。然而&#xff0c;在我们的代码世界里&#xff0c;仍然有不少"老骥伏枥"的系统在兢兢业业地发光发热。这些祖传系统的代码可能早已过时&#xff0c;架构可能岌…

【精调】LLaMA-Factory 快速开始4 自定义个一个sharegpt数据集并训练

数据格式说明 LLaMA Factory:微调LLaMA3模型实现角色扮演 数据集 参考 开源模型应用落地-DeepSeek-R1-Distill-Qwen-7B-LoRA微调-LLaMA-Factory-单机单卡-V100(一) 大神给出的数据集的讲解:注册 如

计算机毕业设计Python+DeepSeek-R1高考推荐系统 高考分数线预测 大数据毕设(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

c++:stack与deque

1.stack使用 1.1empty 作用&#xff1a;判断栈中是否为空 我们看到这里s1初始化的时候是空初始化&#xff0c;所以用empty来判断出的就是空的栈 1.2size size的作用就是判断栈中的数据个数 1.3push 与vector,string,list不同的是,stack中没有头插尾插的概念 因为栈有一个原则&…