gallyga commited on
Commit
bec596e
·
verified ·
1 Parent(s): ab8b793

Update src/api/dependencies.py

Browse files
Files changed (1) hide show
  1. 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
- # 验证API认证令牌
58
- if Config.API_AUTH_TOKEN:
59
- # 如果设置了API_AUTH_TOKEN环境变量,则进行验证
60
- if api_key != Config.API_AUTH_TOKEN:
61
- logger.warning(f"API认证失败: 提供的令牌不匹配")
62
- raise HTTPException(status_code=401, detail="API认证失败,令牌无效")
63
- else:
64
- # 如果未设置API_AUTH_TOKEN,则验证是否为管理面板的key
65
- from ..key_manager import key_manager
66
- valid_keys = [k.get("key") for k in key_manager.get_all_keys() if k.get("is_enabled", False)]
67
- if api_key not in valid_keys and api_key != Config.ADMIN_KEY:
68
- logger.warning(f"API认证失败: 提供的key不在有效列表中")
69
- raise HTTPException(status_code=401, detail="API认证失败,key无效")
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
- return api_key
 
 
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):