🔒 fix(auth): 管理面板添加 API Key 鉴权

- 移除 /api/ 路由的鉴权豁免,所有数据接口必须携带 API Key
- 仅 /healthz 和 /admin/(HTML 页面壳)免鉴权
- 前端新增登录遮罩层,401 时弹出 API Key 输入框
- Key 存储在 sessionStorage,所有 API 请求自动附加 X-API-Key header
- 支持 ?apiKey=xxx URL 参数自动登录(登录后从 URL 移除避免泄露)
This commit is contained in:
2026-05-04 19:01:32 +08:00
parent 29433dda02
commit 832ed063a0
3 changed files with 76 additions and 10 deletions

View File

@@ -10,9 +10,8 @@ from .response import error
@web.middleware
async def auth_middleware(request: web.Request, handler):
"""对需要鉴权的路径校验 API Key。/healthz 和 /admin/ 及 /api/ 开头的路径不需要鉴权。"""
# 不需要鉴权的路径
if request.path == "/healthz" or request.path.startswith("/admin") or request.path.startswith("/api/"):
"""对需要鉴权的路径校验 API Key。/healthz 和管理页面 HTML 无需鉴权。"""
if request.path == "/healthz" or request.path == "/admin/":
return await handler(request)
auth_header = request.headers.get("Authorization", "")