mirror of https://github.com/Mai-with-u/MaiBot.git
bug:修复前端认证错误处理401导致无法登录的问题
修改 get_ws_token 的行为:当认证缺失或已过期时,返回 HTTP 200 且 success=False,而不是 401。这样可以避免用户停留在登录页面时,前端因收到 401 而不必要地刷新页面。pull/1440/head
parent
c3c5bc337d
commit
debc39bacf
|
|
@ -85,6 +85,8 @@ async def get_ws_token(
|
|||
此端点验证当前会话的 Cookie 或 Authorization header,
|
||||
然后返回一个临时 token 用于 WebSocket 握手认证。
|
||||
临时 token 有效期 60 秒,且只能使用一次。
|
||||
|
||||
注意:在未认证时返回 200 状态码但 success=False,避免前端因 401 刷新页面。
|
||||
"""
|
||||
# 获取当前 session token
|
||||
session_token = None
|
||||
|
|
@ -94,12 +96,17 @@ async def get_ws_token(
|
|||
session_token = authorization.replace("Bearer ", "")
|
||||
|
||||
if not session_token:
|
||||
raise HTTPException(status_code=401, detail="未提供认证信息")
|
||||
# 返回 200 但 success=False,避免前端因 401 刷新页面
|
||||
# 这在登录页面是正常情况,不应该触发错误处理
|
||||
logger.debug("ws-token 请求:未提供认证信息(可能在登录页面)")
|
||||
return {"success": False, "message": "未提供认证信息,请先登录", "token": None, "expires_in": 0}
|
||||
|
||||
# 验证 session token
|
||||
token_manager = get_token_manager()
|
||||
if not token_manager.verify_token(session_token):
|
||||
raise HTTPException(status_code=401, detail="认证已过期,请重新登录")
|
||||
# 同样返回 200 但 success=False,避免前端刷新
|
||||
logger.debug("ws-token 请求:认证已过期")
|
||||
return {"success": False, "message": "认证已过期,请重新登录", "token": None, "expires_in": 0}
|
||||
|
||||
# 生成临时 WebSocket token
|
||||
ws_token = generate_ws_token(session_token)
|
||||
|
|
|
|||
Loading…
Reference in New Issue