Files
2026-04-10 10:23:34 +08:00
..
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00
2026-04-10 10:23:34 +08:00

RuoYi 授权码模块

模块简介

ruoyi-license 是一个独立的授权码管理模块,用于控制系统的使用期限。当授权码过期后,系统将无法登录,已登录用户会被强制退出。

功能特性

  • ✅ 授权码加密存储
  • ✅ 登录时验证授权有效性
  • ✅ 定时检查授权状态(每5分钟)
  • ✅ 授权过期自动踢出在线用户
  • ✅ 系统管理界面查看/激活授权
  • ✅ 登录页面激活授权码
  • ✅ 授权码生成工具
  • ✅ 独立模块,方便其他项目复用

快速开始

1. 执行数据库脚本

-- 执行 sql/sys_license.sql 创建授权表和菜单

2. 添加模块依赖

在需要使用授权功能的项目中,添加依赖:

<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-license</artifactId>
    <version>4.8.2</version>
</dependency>

3. 配置包扫描

确保Spring能扫描到授权模块的包:

@SpringBootApplication
@ComponentScan(basePackages = {"com.ruoyi"})
public class RuoYiApplication {
    // ...
}

4. 生成授权码

访问系统管理 -> 授权管理,点击"生成授权码"按钮,输入授权天数(如365天),系统会生成加密的授权码。

5. 激活授权码

方式一:登录页激活

  • 在登录页面点击"激活授权码"链接
  • 输入授权码并提交

方式二:系统内激活

  • 登录系统后,进入"系统管理 -> 授权管理"
  • 点击"激活授权码"按钮
  • 输入授权码并提交

核心类说明

1. 实体类

  • SysLicense: 授权码实体,包含授权码、开始时间、结束时间、状态等信息

2. 工具类

  • LicenseUtils: 授权码工具类
    • generateLicense(): 生成授权码
    • encrypt(): 加密数据
    • decrypt(): 解密数据
    • validateFormat(): 验证授权码格式

3. 服务类

  • ISysLicenseService: 授权服务接口
    • activeLicense(): 激活授权码
    • checkLicenseValid(): 检查授权是否有效
    • getActiveLicense(): 获取当前有效授权

4. 拦截器

  • LicenseInterceptor: 授权拦截器,在每次请求时验证授权有效性

5. 定时任务

  • LicenseCheckTask: 每5分钟检查授权状态,过期自动踢出在线用户

授权码格式

授权码采用AES加密,格式为:

加密(开始时间戳|结束时间戳)

示例:

原始数据: 1704067200000|1735689600000
加密后: Xj8K9mN2pQ5rT7vW1yZ3aB4cD6eF8gH0iJ2kL4mN6oP8qR0sT2uV4wX6yZ8

集成到其他项目

步骤1:复制模块

将 ruoyi-license 文件夹复制到目标项目根目录

步骤2:修改pom.xml

在父pom.xml中添加:

<modules>
    <module>ruoyi-license</module>
</modules>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-license</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

步骤3:添加依赖

在启动模块的pom.xml中添加:

<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-license</artifactId>
</dependency>

步骤4:执行SQL脚本

执行 sql/sys_license.sql 创建数据库表

步骤5:配置Controller

将 SysLicenseController.java 复制到项目的controller包中

步骤6:配置前端页面

将 templates/system/license/ 目录复制到项目的templates目录

步骤7:修改登录页面

参考 login.html 和 login.js 的修改,添加授权码激活入口

自定义配置

修改密钥

编辑 LicenseUtils.java:

private static final String SECRET_KEY = "YourSecretKey123"; // 16位密钥

修改检查频率

编辑 LicenseCheckTask.java:

@Scheduled(cron = "0 */10 * * * ?") // 改为每10分钟检查

自定义拦截规则

编辑 LicenseConfig.java,添加或排除拦截路径:

.excludePathPatterns(
    "/login",
    "/your-custom-path/**"
)

注意事项

  1. 密钥安全:生产环境务必修改默认密钥
  2. 时间同步:确保服务器时间准确
  3. 数据备份:定期备份授权表数据
  4. 权限控制:授权管理菜单仅授予管理员
  5. 测试环境:建议先在测试环境验证功能

常见问题

Q: 授权码激活失败? A: 检查授权码格式是否正确,是否已过期

Q: 如何延长授权期限? A: 生成新的授权码并激活即可

Q: 授权过期后如何恢复? A: 在登录页点击"激活授权码",输入新的授权码

Q: 可以同时激活多个授权码吗? A: 系统只使用最新激活且未过期的授权码

技术支持

如有问题,请联系技术支持或查看RuoYi官方文档。