Files
FT546MWS/ruoyi-license/README.md

194 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RuoYi 授权码模块
## 模块简介
ruoyi-license 是一个独立的授权码管理模块,用于控制系统的使用期限。当授权码过期后,系统将无法登录,已登录用户会被强制退出。
## 功能特性
- ✅ 授权码加密存储
- ✅ 登录时验证授权有效性
- ✅ 定时检查授权状态(每5分钟)
- ✅ 授权过期自动踢出在线用户
- ✅ 系统管理界面查看/激活授权
- ✅ 登录页面激活授权码
- ✅ 授权码生成工具
- ✅ 独立模块,方便其他项目复用
## 快速开始
### 1. 执行数据库脚本
```sql
-- 执行 sql/sys_license.sql 创建授权表和菜单
```
### 2. 添加模块依赖
在需要使用授权功能的项目中,添加依赖:
```xml
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-license</artifactId>
<version>4.8.2</version>
</dependency>
```
### 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
<modules>
<module>ruoyi-license</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-license</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
```
### 步骤3:添加依赖
在启动模块的pom.xml中添加:
```xml
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-license</artifactId>
</dependency>
```
### 步骤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官方文档。