# RuoYi 授权码模块 ## 模块简介 ruoyi-license 是一个独立的授权码管理模块,用于控制系统的使用期限。当授权码过期后,系统将无法登录,已登录用户会被强制退出。 ## 功能特性 - ✅ 授权码加密存储 - ✅ 登录时验证授权有效性 - ✅ 定时检查授权状态(每5分钟) - ✅ 授权过期自动踢出在线用户 - ✅ 系统管理界面查看/激活授权 - ✅ 登录页面激活授权码 - ✅ 授权码生成工具 - ✅ 独立模块,方便其他项目复用 ## 快速开始 ### 1. 执行数据库脚本 ```sql -- 执行 sql/sys_license.sql 创建授权表和菜单 ``` ### 2. 添加模块依赖 在需要使用授权功能的项目中,添加依赖: ```xml com.ruoyi ruoyi-license 4.8.2 ``` ### 3. 配置包扫描 确保Spring能扫描到授权模块的包: ```java @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中添加: ```xml ruoyi-license com.ruoyi ruoyi-license ${project.version} ``` ### 步骤3:添加依赖 在启动模块的pom.xml中添加: ```xml com.ruoyi ruoyi-license ``` ### 步骤4:执行SQL脚本 执行 `sql/sys_license.sql` 创建数据库表 ### 步骤5:配置Controller 将 `SysLicenseController.java` 复制到项目的controller包中 ### 步骤6:配置前端页面 将 `templates/system/license/` 目录复制到项目的templates目录 ### 步骤7:修改登录页面 参考 `login.html` 和 `login.js` 的修改,添加授权码激活入口 ## 自定义配置 ### 修改密钥 编辑 `LicenseUtils.java`: ```java private static final String SECRET_KEY = "YourSecretKey123"; // 16位密钥 ``` ### 修改检查频率 编辑 `LicenseCheckTask.java`: ```java @Scheduled(cron = "0 */10 * * * ?") // 改为每10分钟检查 ``` ### 自定义拦截规则 编辑 `LicenseConfig.java`,添加或排除拦截路径: ```java .excludePathPatterns( "/login", "/your-custom-path/**" ) ``` ## 注意事项 1. **密钥安全**:生产环境务必修改默认密钥 2. **时间同步**:确保服务器时间准确 3. **数据备份**:定期备份授权表数据 4. **权限控制**:授权管理菜单仅授予管理员 5. **测试环境**:建议先在测试环境验证功能 ## 常见问题 **Q: 授权码激活失败?** A: 检查授权码格式是否正确,是否已过期 **Q: 如何延长授权期限?** A: 生成新的授权码并激活即可 **Q: 授权过期后如何恢复?** A: 在登录页点击"激活授权码",输入新的授权码 **Q: 可以同时激活多个授权码吗?** A: 系统只使用最新激活且未过期的授权码 ## 技术支持 如有问题,请联系技术支持或查看RuoYi官方文档。