mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 17:54:50 +00:00
187 lines
3.5 KiB
Markdown
187 lines
3.5 KiB
Markdown
# API Key 过期时间管理指南
|
||
|
||
## 概述
|
||
|
||
Claude Relay Service 支持为 API Keys 设置过期时间,提供了灵活的过期管理功能,方便进行权限控制和安全管理。
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 创建时设置过期时间
|
||
- ✅ 随时修改过期时间
|
||
- ✅ 自动禁用过期的 Keys
|
||
- ✅ 手动续期功能
|
||
- ✅ 批量续期支持
|
||
- ✅ Web 界面和 CLI 双重管理
|
||
|
||
## CLI 管理工具
|
||
|
||
### 1. 查看 API Keys
|
||
|
||
```bash
|
||
npm run cli keys
|
||
# 选择 "📋 查看所有 API Keys"
|
||
```
|
||
|
||
显示内容包括:
|
||
- 名称和部分 Key
|
||
- 活跃/禁用状态
|
||
- 过期时间(带颜色提示)
|
||
- Token 使用量
|
||
- Token 限制
|
||
|
||
### 2. 修改过期时间
|
||
|
||
```bash
|
||
npm run cli keys
|
||
# 选择 "🔧 修改 API Key 过期时间"
|
||
```
|
||
|
||
支持的过期选项:
|
||
- ⏰ **1小时后**(测试用)
|
||
- 📅 **1天后**
|
||
- 📅 **7天后**
|
||
- 📅 **30天后**
|
||
- 📅 **90天后**
|
||
- 📅 **365天后**
|
||
- ♾️ **永不过期**
|
||
- 🎯 **自定义日期时间**
|
||
|
||
### 3. 批量续期
|
||
|
||
```bash
|
||
npm run cli keys
|
||
# 选择 "🔄 续期即将过期的 API Key"
|
||
```
|
||
|
||
功能:
|
||
- 查找7天内即将过期的 Keys
|
||
- 支持全部续期30天或90天
|
||
- 支持逐个选择续期
|
||
|
||
### 4. 删除 API Keys
|
||
|
||
```bash
|
||
npm run cli keys
|
||
# 选择 "🗑️ 删除 API Key"
|
||
```
|
||
|
||
## Web 界面功能
|
||
|
||
### 创建时设置过期
|
||
|
||
在创建 API Key 时,可以选择:
|
||
- 永不过期
|
||
- 1天、7天、30天、90天、180天、365天
|
||
- 自定义日期
|
||
|
||
### 查看过期状态
|
||
|
||
API Key 列表中显示:
|
||
- 🔴 已过期(红色)
|
||
- 🟡 即将过期(7天内,黄色)
|
||
- 🟢 正常(绿色)
|
||
- ♾️ 永不过期
|
||
|
||
### 手动续期
|
||
|
||
对于已过期的 API Keys:
|
||
1. 点击"续期"按钮
|
||
2. 选择新的过期时间
|
||
3. 确认更新
|
||
|
||
## 自动清理机制
|
||
|
||
系统每小时自动运行清理任务:
|
||
- 检查所有 API Keys 的过期时间
|
||
- 将过期的 Keys 标记为禁用(`isActive = false`)
|
||
- 不删除数据,保留历史记录
|
||
- 记录清理日志
|
||
|
||
## 测试工具
|
||
|
||
### 1. 快速测试脚本
|
||
|
||
```bash
|
||
node scripts/test-apikey-expiry.js
|
||
```
|
||
|
||
创建5个测试 Keys:
|
||
- 已过期(1天前)
|
||
- 1小时后过期
|
||
- 1天后过期
|
||
- 7天后过期
|
||
- 永不过期
|
||
|
||
### 2. 迁移脚本
|
||
|
||
为现有 API Keys 设置默认30天过期时间:
|
||
|
||
```bash
|
||
# 预览(不实际修改)
|
||
npm run migrate:apikey-expiry:dry
|
||
|
||
# 执行迁移
|
||
npm run migrate:apikey-expiry
|
||
```
|
||
|
||
## 使用场景
|
||
|
||
### 1. 临时访问
|
||
|
||
为临时用户或测试创建短期 Key:
|
||
```bash
|
||
# 创建1天有效期的测试 Key
|
||
# 在 Web 界面或 CLI 中选择"1天"
|
||
```
|
||
|
||
### 2. 定期更新
|
||
|
||
为安全考虑,定期更新 Keys:
|
||
```bash
|
||
# 每30天自动过期,需要续期
|
||
# 创建时选择"30天"
|
||
```
|
||
|
||
### 3. 长期合作
|
||
|
||
为可信任的长期用户:
|
||
```bash
|
||
# 选择"365天"或"永不过期"
|
||
```
|
||
|
||
### 4. 测试过期功能
|
||
|
||
快速测试过期验证:
|
||
```bash
|
||
# 1. 创建1小时后过期的 Key
|
||
npm run cli keys
|
||
# 选择修改过期时间 -> 选择测试 Key -> 1小时后
|
||
|
||
# 2. 等待或手动触发清理
|
||
# 3. 验证 API 调用被拒绝
|
||
```
|
||
|
||
## API 响应
|
||
|
||
过期的 API Key 调用时返回:
|
||
```json
|
||
{
|
||
"error": "Unauthorized",
|
||
"message": "Invalid or inactive API key"
|
||
}
|
||
```
|
||
|
||
## 最佳实践
|
||
|
||
1. **定期审查**:定期检查即将过期的 Keys
|
||
2. **提前通知**:在过期前通知用户续期
|
||
3. **分级管理**:根据用户级别设置不同过期策略
|
||
4. **测试验证**:新功能上线前充分测试过期机制
|
||
5. **备份恢复**:使用数据导出工具备份 Key 信息
|
||
|
||
## 注意事项
|
||
|
||
- 过期的 Keys 不会被删除,只是禁用
|
||
- 可以随时续期已过期的 Keys
|
||
- 修改过期时间立即生效
|
||
- 清理任务每小时运行一次 |