6.9 KiB
6.9 KiB
RuoYi 授权码模块 - 项目总结
📦 已完成的工作
1. 核心模块开发 ✅
ruoyi-license 独立模块
- ✅ Maven模块配置 (pom.xml)
- ✅ 授权实体类 (SysLicense.java)
- ✅ 数据访问层 (SysLicenseMapper.java + XML)
- ✅ 业务逻辑层 (ISysLicenseService.java + Impl)
- ✅ 授权工具类 (LicenseUtils.java)
- ✅ 授权拦截器 (LicenseInterceptor.java)
- ✅ 拦截器配置 (LicenseConfig.java)
- ✅ 定时检查任务 (LicenseCheckTask.java)
- ✅ 授权码生成器 (LicenseGenerator.java)
- ✅ 测试工具 (LicenseTest.java)
2. 控制器和前端 ✅
后端控制器
- ✅ SysLicenseController.java (授权管理控制器)
- 授权列表查询
- 授权码激活
- 授权码生成
- 授权信息查看
- 授权删除
前端页面
- ✅ license.html (授权列表页)
- ✅ active.html (激活页面)
- ✅ login.html (添加激活入口)
- ✅ login.js (添加激活功能)
3. 数据库脚本 ✅
- ✅ sys_license.sql
- 授权表结构
- 菜单权限配置
4. 项目集成 ✅
- ✅ 主pom.xml (添加license模块)
- ✅ ruoyi-admin/pom.xml (添加license依赖)
5. 文档编写 ✅
- ✅ README.md (使用说明)
- ✅ INTEGRATION.md (集成指南)
🎯 功能特性
核心功能
- 授权码加密存储 - AES加密,安全可靠
- 登录验证 - 登录时自动验证授权有效性
- 拦截器保护 - 所有请求都经过授权验证
- 定时检查 - 每5分钟自动检查授权状态
- 自动踢出 - 授权过期自动踢出所有在线用户
- 管理界面 - 完整的授权管理功能
- 登录页激活 - 无需登录即可激活授权码
- 授权码生成 - 内置生成工具,支持自定义天数
技术亮点
- 🔒 AES加密算法保护授权码
- 🔄 Spring拦截器实现全局授权验证
- ⏰ Spring定时任务自动检查授权
- 🎨 完整的前后端交互界面
- 📦 独立模块设计,方便复用
- 🛠️ 提供测试工具和生成工具
📂 文件清单
ruoyi-license/
├── src/main/java/com/ruoyi/license/
│ ├── config/
│ │ └── LicenseConfig.java (拦截器配置)
│ ├── domain/
│ │ └── SysLicense.java (授权实体)
│ ├── interceptor/
│ │ └── LicenseInterceptor.java (授权拦截器)
│ ├── mapper/
│ │ └── SysLicenseMapper.java (Mapper接口)
│ ├── service/
│ │ ├── ISysLicenseService.java (服务接口)
│ │ └── impl/
│ │ └── SysLicenseServiceImpl.java (服务实现)
│ ├── task/
│ │ └── LicenseCheckTask.java (定时任务)
│ └── util/
│ ├── LicenseUtils.java (工具类)
│ ├── LicenseGenerator.java (生成器)
│ └── LicenseTest.java (测试工具)
├── src/main/resources/mapper/license/
│ └── SysLicenseMapper.xml (MyBatis映射)
├── pom.xml (模块配置)
├── README.md (使用说明)
└── INTEGRATION.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 (添加模块)
├── ruoyi-admin/pom.xml (添加依赖)
├── ruoyi-admin/src/main/resources/templates/login.html
└── ruoyi-admin/src/main/resources/static/ruoyi/login.js
🚀 快速开始
1. 执行数据库脚本
source sql/sys_license.sql;
2. 启用定时任务
在 RuoYiApplication.java 添加 @EnableScheduling
3. 编译项目
mvn clean install
4. 生成授权码
运行 LicenseGenerator.java 或在系统界面生成
5. 激活授权码
登录页点击"激活授权码"输入授权码
🔧 使用场景
场景1:软件交付
- 开发完成后生成授权码
- 交付给客户时提供授权码
- 客户激活后可使用指定期限
场景2:试用版本
- 生成30天试用授权码
- 客户试用满意后购买正式授权
- 激活正式授权码延长使用期限
场景3:订阅服务
- 按年生成授权码
- 到期前提醒客户续费
- 续费后激活新授权码
场景4:多项目复用
- 将license模块复制到其他项目
- 修改密钥和配置
- 快速实现授权功能
⚙️ 自定义配置
修改密钥(必须)
// LicenseUtils.java
private static final String SECRET_KEY = "YourKey16Chars!!";
调整检查频率
// LicenseCheckTask.java
@Scheduled(cron = "0 */10 * * * ?") // 改为10分钟
自定义拦截路径
// LicenseConfig.java
.excludePathPatterns("/api/**", "/public/**")
📊 数据库表结构
sys_license (授权表)
├── license_id (授权ID - 主键)
├── license_code (授权码 - 加密存储)
├── start_time (开始时间)
├── expire_time (结束时间)
├── status (状态: 0未激活 1已激活 2已过期)
├── active_time (激活时间)
├── active_by (激活人)
├── create_by (创建者)
├── create_time (创建时间)
├── update_by (更新者)
├── update_time (更新时间)
└── remark (备注)
🔐 安全建议
- 生产环境必须修改默认密钥
- 授权码通过安全渠道传递
- 定期备份授权表数据
- 限制授权管理菜单权限
- 监控授权激活日志
📝 后续优化建议
- 硬件绑定 - 绑定服务器MAC地址或CPU序列号
- 在线验证 - 连接授权服务器在线验证
- 授权分级 - 不同授权码对应不同功能权限
- 自动续费 - 集成支付接口自动续费
- 授权统计 - 统计授权使用情况和到期提醒
✅ 测试清单
- 数据库表创建成功
- 菜单权限配置正确
- 授权码生成功能正常
- 授权码加密解密正确
- 登录页激活功能正常
- 系统内激活功能正常
- 授权拦截器生效
- 定时任务执行正常
- 授权过期自动踢出
- 授权列表查询正常
📞 技术支持
如有问题,请查看:
- README.md - 使用说明
- INTEGRATION.md - 集成指南
- RuoYi官方文档
开发完成时间: 2024 模块版本: 1.0.0 适用框架: RuoYi v4.8.2 技术栈: SpringBoot + MyBatis + Shiro + Thymeleaf