240 lines
6.9 KiB
Markdown
240 lines
6.9 KiB
Markdown
# 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 (集成指南)
|
||
|
||
## 🎯 功能特性
|
||
|
||
### 核心功能
|
||
1. **授权码加密存储** - AES加密,安全可靠
|
||
2. **登录验证** - 登录时自动验证授权有效性
|
||
3. **拦截器保护** - 所有请求都经过授权验证
|
||
4. **定时检查** - 每5分钟自动检查授权状态
|
||
5. **自动踢出** - 授权过期自动踢出所有在线用户
|
||
6. **管理界面** - 完整的授权管理功能
|
||
7. **登录页激活** - 无需登录即可激活授权码
|
||
8. **授权码生成** - 内置生成工具,支持自定义天数
|
||
|
||
### 技术亮点
|
||
- 🔒 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. 执行数据库脚本
|
||
```sql
|
||
source sql/sys_license.sql;
|
||
```
|
||
|
||
### 2. 启用定时任务
|
||
在 RuoYiApplication.java 添加 @EnableScheduling
|
||
|
||
### 3. 编译项目
|
||
```bash
|
||
mvn clean install
|
||
```
|
||
|
||
### 4. 生成授权码
|
||
运行 LicenseGenerator.java 或在系统界面生成
|
||
|
||
### 5. 激活授权码
|
||
登录页点击"激活授权码"输入授权码
|
||
|
||
## 🔧 使用场景
|
||
|
||
### 场景1:软件交付
|
||
- 开发完成后生成授权码
|
||
- 交付给客户时提供授权码
|
||
- 客户激活后可使用指定期限
|
||
|
||
### 场景2:试用版本
|
||
- 生成30天试用授权码
|
||
- 客户试用满意后购买正式授权
|
||
- 激活正式授权码延长使用期限
|
||
|
||
### 场景3:订阅服务
|
||
- 按年生成授权码
|
||
- 到期前提醒客户续费
|
||
- 续费后激活新授权码
|
||
|
||
### 场景4:多项目复用
|
||
- 将license模块复制到其他项目
|
||
- 修改密钥和配置
|
||
- 快速实现授权功能
|
||
|
||
## ⚙️ 自定义配置
|
||
|
||
### 修改密钥(必须)
|
||
```java
|
||
// LicenseUtils.java
|
||
private static final String SECRET_KEY = "YourKey16Chars!!";
|
||
```
|
||
|
||
### 调整检查频率
|
||
```java
|
||
// LicenseCheckTask.java
|
||
@Scheduled(cron = "0 */10 * * * ?") // 改为10分钟
|
||
```
|
||
|
||
### 自定义拦截路径
|
||
```java
|
||
// LicenseConfig.java
|
||
.excludePathPatterns("/api/**", "/public/**")
|
||
```
|
||
|
||
## 📊 数据库表结构
|
||
|
||
```sql
|
||
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 (备注)
|
||
```
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **生产环境必须修改默认密钥**
|
||
2. **授权码通过安全渠道传递**
|
||
3. **定期备份授权表数据**
|
||
4. **限制授权管理菜单权限**
|
||
5. **监控授权激活日志**
|
||
|
||
## 📝 后续优化建议
|
||
|
||
1. **硬件绑定** - 绑定服务器MAC地址或CPU序列号
|
||
2. **在线验证** - 连接授权服务器在线验证
|
||
3. **授权分级** - 不同授权码对应不同功能权限
|
||
4. **自动续费** - 集成支付接口自动续费
|
||
5. **授权统计** - 统计授权使用情况和到期提醒
|
||
|
||
## ✅ 测试清单
|
||
|
||
- [ ] 数据库表创建成功
|
||
- [ ] 菜单权限配置正确
|
||
- [ ] 授权码生成功能正常
|
||
- [ ] 授权码加密解密正确
|
||
- [ ] 登录页激活功能正常
|
||
- [ ] 系统内激活功能正常
|
||
- [ ] 授权拦截器生效
|
||
- [ ] 定时任务执行正常
|
||
- [ ] 授权过期自动踢出
|
||
- [ ] 授权列表查询正常
|
||
|
||
## 📞 技术支持
|
||
|
||
如有问题,请查看:
|
||
1. README.md - 使用说明
|
||
2. INTEGRATION.md - 集成指南
|
||
3. RuoYi官方文档
|
||
|
||
---
|
||
|
||
**开发完成时间**: 2024
|
||
**模块版本**: 1.0.0
|
||
**适用框架**: RuoYi v4.8.2
|
||
**技术栈**: SpringBoot + MyBatis + Shiro + Thymeleaf
|