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