feat: 增强 Gemini 认证支持与 URL 敏感信息脱敏

- 新增 extract_client_api_key_with_query 支持从 URL query 参数提取 API Key
- Gemini 格式遵循 Google SDK 行为:query 参数优先于 header
- 添加 redact_url_for_log 函数对日志中的敏感 URL 参数脱敏
- 上游请求始终使用 header 认证,清除 Gemini query 中的 key 参数
- 放宽 API Key 最小长度限制至 3 字符
- 完善认证方式相关代码注释
This commit is contained in:
fawney19
2026-01-22 19:11:38 +08:00
parent 1d27284575
commit ee5ba42b79
12 changed files with 176 additions and 40 deletions

View File

@@ -273,8 +273,8 @@ class CreateAPIKeyRequest(BaseModel):
v = v.strip()
# 检查最小长度
if len(v) < 10:
raise ValueError("API Key 长度不能少于 10 个字符")
if len(v) < 3:
raise ValueError("API Key 长度不能少于 3 个字符")
# 检查危险字符(不应包含 SQL 注入字符)
dangerous_chars = ["'", '"', ";", "--", "/*", "*/", "<", ">"]

View File

@@ -382,8 +382,8 @@ class EndpointAPIKeyUpdate(BaseModel):
return v
v = v.strip()
if len(v) < 10:
raise ValueError("API Key 长度不能少于 10 个字符")
if len(v) < 3:
raise ValueError("API Key 长度不能少于 3 个字符")
dangerous_chars = ["'", '"', ";", "--", "/*", "*/", "<", ">"]
for char in dangerous_chars: