# RuoYi 授权码模块集成指南 ## 一、模块说明 本授权码模块已完成开发,包含以下文件: ``` ruoyi-license/ # 授权模块(独立模块) ├── src/main/java/com/ruoyi/license/ │ ├── config/ │ │ └── LicenseConfig.java # 拦截器配置 │ ├── domain/ │ │ └── SysLicense.java # 授权实体 │ ├── interceptor/ │ │ └── LicenseInterceptor.java # 授权拦截器 │ ├── mapper/ │ │ └── SysLicenseMapper.java # 数据访问接口 │ ├── service/ │ │ ├── ISysLicenseService.java # 服务接口 │ │ └── impl/ │ │ └── SysLicenseServiceImpl.java # 服务实现 │ ├── task/ │ │ └── LicenseCheckTask.java # 定时检查任务 │ └── util/ │ ├── LicenseUtils.java # 授权工具类 │ └── LicenseGenerator.java # 授权码生成器 ├── src/main/resources/mapper/license/ │ └── SysLicenseMapper.xml # MyBatis映射 ├── pom.xml # 模块依赖 └── README.md # 使用说明 sql/ └── sys_license.sql # 数据库脚本 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/license/ └── SysLicenseController.java # 授权控制器 ruoyi-admin/src/main/resources/templates/system/license/ ├── license.html # 授权列表页 └── active.html # 激活页面 修改的文件: - pom.xml # 添加license模块 - ruoyi-admin/pom.xml # 添加license依赖 - login.html # 添加激活入口 - login.js # 添加激活功能 ``` ## 二、部署步骤 ### 1. 执行数据库脚本 ```bash # 在MySQL中执行 mysql -u root -p your_database < sql/sys_license.sql ``` 或手动执行 `sql/sys_license.sql` 中的SQL语句。 ### 2. 启用定时任务 在启动类上添加 `@EnableScheduling` 注解: ```java @SpringBootApplication @EnableScheduling // 添加此注解 public class RuoYiApplication { public static void main(String[] args) { SpringApplication.run(RuoYiApplication.class, args); } } ``` ### 3. 编译项目 ```bash cd d:\fortucky\project\RuoYi-master mvn clean install ``` ### 4. 生成授权码 **方式一:使用独立工具生成** ```bash cd ruoyi-license/src/main/java javac com/ruoyi/license/util/LicenseUtils.java javac com/ruoyi/license/util/LicenseGenerator.java java com.ruoyi.license.util.LicenseGenerator ``` **方式二:启动系统后在界面生成** - 登录系统 - 进入"系统管理 -> 授权管理" - 点击"生成授权码"按钮 ### 5. 激活授权码 **首次激活(登录页):** 1. 访问登录页 2. 点击"激活授权码"链接 3. 输入生成的授权码 4. 提交激活 **系统内激活:** 1. 登录系统(需要先有有效授权) 2. 进入"系统管理 -> 授权管理" 3. 点击"激活授权码" 4. 输入新的授权码 ## 三、功能验证 ### 1. 验证授权拦截 - 未激活授权码时,访问任何页面应跳转到登录页并提示"授权已过期" - 激活授权码后,可正常访问系统 ### 2. 验证定时检查 - 修改数据库中授权码的 `expire_time` 为过去时间 - 等待5分钟(或重启系统) - 在线用户应被强制退出 - 尝试登录应提示授权过期 ### 3. 验证授权管理 - 访问"系统管理 -> 授权管理" - 查看授权列表 - 生成新授权码 - 激活授权码 - 删除过期授权 ## 四、复用到其他项目 ### 方式一:Maven依赖(推荐) 1. 将 `ruoyi-license` 模块复制到目标项目 2. 在父pom.xml添加模块声明 3. 在需要的模块添加依赖 4. 执行数据库脚本 5. 复制Controller和前端页面 ### 方式二:JAR包依赖 1. 打包license模块: ```bash cd ruoyi-license mvn clean package ``` 2. 安装到本地仓库: ```bash mvn install:install-file -Dfile=target/ruoyi-license-4.8.2.jar \ -DgroupId=com.ruoyi -DartifactId=ruoyi-license \ -Dversion=4.8.2 -Dpackaging=jar ``` 3. 在目标项目添加依赖: ```xml com.ruoyi ruoyi-license 4.8.2 ``` ## 五、配置说明 ### 1. 修改密钥(重要) 生产环境必须修改默认密钥: ```java // LicenseUtils.java private static final String SECRET_KEY = "YourCustomKey123"; // 改为16位自定义密钥 ``` ### 2. 调整检查频率 ```java // LicenseCheckTask.java @Scheduled(cron = "0 */5 * * * ?") // 每5分钟,可根据需要调整 ``` ### 3. 自定义拦截路径 ```java // LicenseConfig.java .excludePathPatterns( "/login", "/your-path/**" // 添加需要排除的路径 ) ``` ## 六、注意事项 1. **首次部署**:必须先生成并激活授权码,否则无法登录 2. **时间同步**:确保服务器时间准确,避免授权判断错误 3. **密钥安全**:生产环境务必修改默认密钥 4. **数据备份**:定期备份 `sys_license` 表数据 5. **权限控制**:授权管理菜单仅授予超级管理员 ## 七、故障排查 ### 问题1:无法激活授权码 - 检查授权码格式是否正确 - 检查授权码是否已过期 - 查看后台日志错误信息 ### 问题2:授权有效但仍被拦截 - 检查数据库中授权状态是否为"1" - 检查 `expire_time` 是否大于当前时间 - 重启应用服务器 ### 问题3:定时任务不执行 - 确认启动类添加了 `@EnableScheduling` - 检查日志是否有定时任务执行记录 ### 问题4:在线用户未被踢出 - 检查 `SessionDAO` 是否正确注入 - 查看定时任务是否正常执行 - 检查Shiro配置是否正确 ## 八、技术支持 如遇到问题,请提供以下信息: 1. 错误日志 2. 数据库授权记录 3. 系统环境信息 4. 操作步骤 联系方式:参考RuoYi官方文档