Spaces:
Running
Running
from typing import Optional | |
from fastapi import HTTPException, Header, Query | |
import app.config.settings as settings | |
# 自定义密码校验依赖函数 | |
async def custom_verify_password( | |
authorization: Optional[str] = Header(None, description="OpenAI 格式请求 Key, 格式: Bearer sk-xxxx"), | |
x_goog_api_key: Optional[str] = Header(None, description="Gemini 格式请求 Key, 从请求头 x-goog-api-key 获取"), | |
key: Optional[str] = Query(None, description="Gemini 格式请求 Key, 从查询参数 key 获取"), | |
alt: Optional[str] = None | |
): | |
""" | |
@@ -15,22 +18,79 @@ | |
2. 根据类型,与项目配置的密钥进行比对。 | |
3. 如果 Key 无效、缺失或不匹配,则抛出 HTTPException。 | |
""" | |
client_provided_api_key: Optional[str] = None | |
# 提取客户端提供的 Key | |
if x_goog_api_key: | |
client_provided_api_key = x_goog_api_key | |
elif key: | |
client_provided_api_key = key | |
elif authorization and authorization.startswith("Bearer "): | |
token = authorization.split(" ", 1)[1] | |
client_provided_api_key = token | |
# 进行校验和比对 | |
if (not client_provided_api_key) or (client_provided_api_key != settings.PASSWORD) : | |
raise HTTPException( | |
status_code=401, detail="Unauthorized: Invalid token") | |
def verify_web_password(password:str): | |
if password != settings.WEB_PASSWORD: | |
return False | |
return True |