Spaces:
Sleeping
Sleeping
| """ | |
| API认证模块 | |
| 提供API Key验证功能(用于API端点) | |
| 管理端点使用Session认证(见core/session_auth.py) | |
| """ | |
| from typing import Optional | |
| from fastapi import HTTPException | |
| def verify_api_key(api_key_value: str, authorization: Optional[str] = None) -> bool: | |
| """ | |
| 验证 API Key | |
| Args: | |
| api_key_value: 配置的API Key值(如果为空则跳过验证) | |
| authorization: Authorization Header中的值 | |
| Returns: | |
| 验证通过返回True,否则抛出HTTPException | |
| 支持格式: | |
| 1. Bearer YOUR_API_KEY | |
| 2. YOUR_API_KEY | |
| """ | |
| # 如果未配置 API_KEY,则跳过验证 | |
| if not api_key_value: | |
| return True | |
| # 检查 Authorization header | |
| if not authorization: | |
| raise HTTPException( | |
| status_code=401, | |
| detail="Missing Authorization header" | |
| ) | |
| # 提取token(支持Bearer格式) | |
| token = authorization | |
| if authorization.startswith("Bearer "): | |
| token = authorization[7:] | |
| if token != api_key_value: | |
| raise HTTPException( | |
| status_code=401, | |
| detail="Invalid API Key" | |
| ) | |
| return True | |