Skip to content

Commit 55b9ac8

Browse files
committed
更新API密钥管理功能,支持多个API密钥配置,增强权限控制。修改API密钥验证逻辑,新增管理员权限验证。更新相关文档和示例,确保用户体验和安全性。
1 parent 2d05a61 commit 55b9ac8

23 files changed

Lines changed: 484 additions & 182 deletions

.env.example

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,19 @@ PM2_INSTANCES=1
2222
# 支持格式: 100M, 1G, 2G 等
2323
PM2_MAX_MEMORY=1G
2424

25-
# API 密钥 (非必填)
26-
# 如果需要使用多账户或使用内置账户,请填写
25+
# API 密钥配置
26+
# 支持单个或多个API_KEY,用逗号分隔
27+
# 第一个API_KEY为管理员密钥,拥有全部权限(可访问前端管理页面、修改设置)
28+
# 其他API_KEY为普通密钥,仅有调用API的权限,不能访问前端管理页面
29+
#
30+
# 单个密钥示例:
31+
# API_KEY=sk-admin123
32+
#
33+
# 多个密钥示例:
34+
# API_KEY=sk-admin123,sk-user456,sk-user789
35+
# 其中:
36+
# - sk-admin123: 管理员密钥(可访问前端管理页面,可修改所有设置)
37+
# - sk-user456,sk-user789: 普通密钥(仅可调用API,不能访问前端页面)
2738
API_KEY=sk-123456
2839

2940
# 是否输出思考过程

README.md

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
- Docker (可选)
2020
- Redis (可选,用于数据持久化)
2121

22-
> 💡 **提示**: 如果使用二进制文件部署,无需安装 Node.js 环境
23-
2422
### ⚙️ 环境配置
2523

2624
创建 `.env` 文件并配置以下参数:
@@ -32,7 +30,7 @@ LISTEN_ADDRESS=localhost # 监听地址
3230
SERVICE_PORT=3000 # 服务端口
3331

3432
# 🔐 安全配置
35-
API_KEY=sk-123456 # API 密钥 (必填)
33+
API_KEY=sk-123456,sk-456789 # API 密钥 (必填,支持多密钥)
3634
ACCOUNTS= # 账户配置 (格式: user1:pass1,user2:pass2)
3735

3836
# 🚀 PM2 多进程配置
@@ -59,7 +57,7 @@ CACHE_MODE=default # 图片缓存模式 (default/file)
5957
| `API_PREFIX` | API 路径前缀,不填则为根路径 | `/api``http://localhost:3000/api` |
6058
| `LISTEN_ADDRESS` | 服务监听地址 | `localhost``0.0.0.0` |
6159
| `SERVICE_PORT` | 服务运行端口 | `3000` |
62-
| `API_KEY` | API 访问密钥 (必填) | `sk-your-secret-key` |
60+
| `API_KEY` | API 访问密钥,支持多密钥配置。第一个为管理员密钥(可访问前端管理页面),其他为普通密钥(仅可调用API)。多个密钥用逗号分隔 | `sk-admin123,sk-user456,sk-user789` |
6361
| `PM2_INSTANCES` | PM2进程数量 | `1`/`4`/`max` |
6462
| `PM2_MAX_MEMORY` | PM2内存限制 | `100M`/`1G`/`2G` |
6563
| `SEARCH_INFO_MODE` | 搜索结果展示格式 | `table``text` |
@@ -73,6 +71,36 @@ CACHE_MODE=default # 图片缓存模式 (default/file)
7371
| `MAX_LOG_FILE_SIZE` | 最大日志文件大小(MB) | `10` |
7472
| `MAX_LOG_FILES` | 保留的日志文件数量 | `5` |
7573

74+
#### 🔑 多API_KEY配置说明
75+
76+
`API_KEY` 环境变量支持配置多个API密钥,用于实现不同权限级别的访问控制:
77+
78+
**配置格式:**
79+
```bash
80+
# 单个密钥(管理员权限)
81+
API_KEY=sk-admin123
82+
83+
# 多个密钥(第一个为管理员,其他为普通用户)
84+
API_KEY=sk-admin123,sk-user456,sk-user789
85+
```
86+
87+
**权限说明:**
88+
89+
| 密钥类型 | 权限范围 | 功能描述 |
90+
|----------|----------|----------|
91+
| **管理员密钥** | 完整权限 | • 访问前端管理页面<br>• 修改系统设置<br>• 调用所有API接口<br>• 添加/删除普通密钥 |
92+
| **普通密钥** | API调用权限 | • 仅可调用API接口<br>• 无法访问前端管理页面<br>• 无法修改系统设置 |
93+
94+
**使用场景:**
95+
- **团队协作**: 为不同团队成员分配不同权限的API密钥
96+
- **应用集成**: 为第三方应用提供受限的API访问权限
97+
- **安全隔离**: 将管理权限与普通使用权限分离
98+
99+
**注意事项:**
100+
- 第一个API_KEY自动成为管理员密钥,拥有最高权限
101+
- 管理员可以通过前端页面动态添加或删除普通密钥
102+
- 所有密钥都可以正常调用API接口,权限差异仅体现在管理功能上
103+
76104
#### 📸 CACHE_MODE 缓存模式说明
77105

78106
`CACHE_MODE` 环境变量控制图片缓存的存储方式,用于优化图片上传和处理性能:
@@ -110,9 +138,21 @@ caches/
110138
#### 方式一:直接运行
111139

112140
```bash
141+
# 单个API密钥部署
113142
docker run -d \
114143
-p 3000:3000 \
115-
-e API_KEY=sk-your-secret-key \
144+
-e API_KEY=sk-your-admin-key \
145+
-e DATA_SAVE_MODE=none \
146+
-e CACHE_MODE=file \
147+
-e ACCOUNTS= \
148+
-v ./caches:/app/caches \
149+
--name qwen2api \
150+
rfym21/qwen2api:latest
151+
152+
# 多个API密钥部署(推荐)
153+
docker run -d \
154+
-p 3000:3000 \
155+
-e API_KEY=sk-admin123,sk-user456,sk-user789 \
116156
-e DATA_SAVE_MODE=none \
117157
-e CACHE_MODE=file \
118158
-e ACCOUNTS= \
@@ -261,6 +301,27 @@ Qwen2API/
261301

262302
## 📖 API 文档
263303

304+
### 🔐 API 认证说明
305+
306+
本API支持多密钥认证机制,所有API请求都需要在请求头中包含有效的API密钥:
307+
308+
```http
309+
Authorization: Bearer sk-your-api-key
310+
```
311+
312+
**支持的密钥类型:**
313+
- **管理员密钥**: 第一个配置的API_KEY,拥有完整权限
314+
- **普通密钥**: 其他配置的API_KEY,仅可调用API接口
315+
316+
**认证示例:**
317+
```bash
318+
# 使用管理员密钥
319+
curl -H "Authorization: Bearer sk-admin123" http://localhost:3000/v1/models
320+
321+
# 使用普通密钥
322+
curl -H "Authorization: Bearer sk-user456" http://localhost:3000/v1/chat/completions
323+
```
324+
264325
### 🔍 获取模型列表
265326

266327
获取所有可用的 AI 模型列表。

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "qwen2api",
3-
"version": "2025.08.19.15.50",
3+
"version": "2025.08.22.14.22",
44
"main": "src/server.js",
55
"scripts": {
66
"start": "node src/start.js",
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/dist/assets/dashboard-BnKlLtor.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)