3.3 KiB
3.3 KiB
授权码功能设计
1. 功能概述
授权码功能用于设备激活和授权验证,确保应用在授权设备上使用。
2. 核心功能
2.1 设备标识
- 基于主机名、用户目录、操作系统生成设备ID
- 使用 MD5 哈希确保唯一性和稳定性
- 设备ID与授权码绑定
2.2 授权码验证
- 授权码输入和格式验证
- 设备绑定(授权码与设备ID关联)
- 授权状态存储(SQLite 本地数据库)
2.3 激活验证
- 应用启动时自动验证授权状态
- 授权信息展示
- 授权失效处理
3. 数据模型
3.1 Authorization 表结构
CREATE TABLE IF NOT EXISTS `sys_authorization_code` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT, -- 主键ID
`license_code` VARCHAR(100) NOT NULL, -- 授权码(唯一)
`device_id` VARCHAR(100) NOT NULL, -- 设备ID(MD5哈希)
`activated_at` DATETIME NOT NULL, -- 激活时间
`expires_at` DATETIME NULL, -- 过期时间(可选,NULL表示永不过期)
`status` TINYINT NOT NULL DEFAULT 1, -- 状态(1:有效 0:无效)
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
UNIQUE (`license_code`) -- 授权码唯一索引
);
3.2 字段说明
id: 主键ID,自增license_code: 授权码,唯一索引(UNIQUE约束)device_id: 设备ID(基于主机名、用户目录、操作系统生成的MD5哈希),通过 GORM 标签定义索引activated_at: 激活时间,必填expires_at: 过期时间,可选,NULL表示永不过期status: 状态(1:有效 0:无效),默认值为1created_at: 创建时间,自动设置为当前时间updated_at: 更新时间,自动更新为当前时间
3.3 索引说明
license_code: 唯一索引(UNIQUE约束),用于快速查找和验证授权码- 其他字段的索引通过 GORM 标签在模型定义中声明,由 GORM AutoMigrate 自动创建
4. API 接口
4.1 ActivateLicense
- 功能: 激活授权码
- 参数:
licenseCode string - 返回: 激活结果和授权状态
4.2 GetAuthStatus
- 功能: 获取当前授权状态
- 返回: 授权状态信息
4.3 GetDeviceID
- 功能: 获取设备ID
- 返回: 设备ID字符串
5. 实现架构
5.1 分层结构
API 层 (auth_api.go)
↓
Service 层 (auth_service.go)
↓
Repository 层 (auth_repository.go)
↓
Model 层 (authorization.go)
↓
SQLite 数据库
5.2 启动验证流程
应用启动
↓
初始化 SQLite
↓
初始化 AuthAPI
↓
检查授权状态
↓
未激活 → 提示用户激活
已激活 → 继续运行
6. 使用说明
6.1 激活授权
前端调用 ActivateLicense(licenseCode) 方法激活授权码。
6.2 检查状态
前端调用 GetAuthStatus() 方法获取授权状态,根据状态决定是否显示激活界面。
6.3 设备ID
调用 GetDeviceID() 获取设备ID,可用于授权码生成或问题排查。
文档维护者:JueChen
创建时间:2026-01-07