Spaces:
Paused
Paused
Update src/api/dependencies.py
Browse files- src/api/dependencies.py +29 -14
src/api/dependencies.py
CHANGED
|
@@ -54,21 +54,36 @@ async def verify_api_key(request: Request):
|
|
| 54 |
|
| 55 |
api_key = auth_header.replace("Bearer ", "")
|
| 56 |
|
| 57 |
-
#
|
| 58 |
-
if Config.
|
| 59 |
-
# 如果设置了
|
| 60 |
-
if api_key
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
-
|
|
|
|
|
|
|
| 72 |
|
| 73 |
# 获取Sora客户端依赖
|
| 74 |
def get_sora_client_dep(specific_key=None):
|
|
|
|
| 54 |
|
| 55 |
api_key = auth_header.replace("Bearer ", "")
|
| 56 |
|
| 57 |
+
# 优先使用API_ACCESS_TOKEN进行认证
|
| 58 |
+
if Config.API_ACCESS_TOKEN:
|
| 59 |
+
# 如果设置了API_ACCESS_TOKEN环境变量,则进行验证
|
| 60 |
+
if api_key == Config.API_ACCESS_TOKEN:
|
| 61 |
+
return api_key
|
| 62 |
+
else:
|
| 63 |
+
logger.warning(f"API访问认证失败: 提供的令牌与API_ACCESS_TOKEN不匹配")
|
| 64 |
+
|
| 65 |
+
# 如果没有API_ACCESS_TOKEN或验证失败,验证是否为key_manager中的密钥
|
| 66 |
+
from ..key_manager import key_manager
|
| 67 |
+
# 获取所有启用的密钥的原始令牌值(不含Bearer前缀)
|
| 68 |
+
valid_keys = []
|
| 69 |
+
for k in key_manager.get_all_keys():
|
| 70 |
+
if k.get("is_enabled", False):
|
| 71 |
+
key_value = k.get("key", "")
|
| 72 |
+
if key_value.startswith("Bearer "):
|
| 73 |
+
key_value = key_value[7:] # 移除Bearer前缀
|
| 74 |
+
valid_keys.append(key_value)
|
| 75 |
+
|
| 76 |
+
# 检查API密钥是否在有效列表中
|
| 77 |
+
if api_key in valid_keys:
|
| 78 |
+
return api_key
|
| 79 |
+
|
| 80 |
+
# 最后检查是否为管理员密钥
|
| 81 |
+
if api_key == Config.ADMIN_KEY:
|
| 82 |
+
return api_key
|
| 83 |
|
| 84 |
+
# 所有验证都失败
|
| 85 |
+
logger.warning(f"API认证失败: 提供的key不在有效列表中")
|
| 86 |
+
raise HTTPException(status_code=401, detail="API认证失败,key无效")
|
| 87 |
|
| 88 |
# 获取Sora客户端依赖
|
| 89 |
def get_sora_client_dep(specific_key=None):
|