diff --git a/deploy/fba/seed_iaop_menus.py b/deploy/fba/seed_iaop_menus.py index 4286156..ba610ab 100644 --- a/deploy/fba/seed_iaop_menus.py +++ b/deploy/fba/seed_iaop_menus.py @@ -28,6 +28,7 @@ import getpass import json import sys import urllib.error +import urllib.parse import urllib.request # ---- iAOP 模块注册表(镜像 web/shared/session.js 的 MODULES,顺序即菜单顺序) ---- @@ -61,7 +62,10 @@ class FbaClient: def __init__(self, base: str, username: str, password: str): self.base = base.rstrip("/") cred = base64.b64encode(f"{username}:{password}".encode()).decode() - d = self._req("POST", "/auth/login/swagger", + # FastAPI >= 0.13x 将 HTTPBasicCredentials 绑定到 query 参数, + # 登录需带 ?username=&password=(Basic 头仍保留,双通道兼容)。 + q = urllib.parse.urlencode({"username": username, "password": password}) + d = self._req("POST", f"/auth/login/swagger?{q}", headers={"Authorization": f"Basic {cred}"}) self.token = d["data"]["access_token"] print(f"[ok] 登录成功:{username}({d['data']['user']['username']})")