Merge pull request #1440 from A-Dawn/dev

bug:修复前端认证错误处理401导致无法登录的问题
pull/1443/head
墨梓柒 2025-12-14 21:29:09 +08:00 committed by GitHub
commit ee4cb3dc67
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 2 deletions

View File

@ -85,6 +85,8 @@ async def get_ws_token(
此端点验证当前会话的 Cookie Authorization header 此端点验证当前会话的 Cookie Authorization header
然后返回一个临时 token 用于 WebSocket 握手认证 然后返回一个临时 token 用于 WebSocket 握手认证
临时 token 有效期 60 且只能使用一次 临时 token 有效期 60 且只能使用一次
注意在未认证时返回 200 状态码但 success=False避免前端因 401 刷新页面
""" """
# 获取当前 session token # 获取当前 session token
session_token = None session_token = None
@ -94,12 +96,17 @@ async def get_ws_token(
session_token = authorization.replace("Bearer ", "") session_token = authorization.replace("Bearer ", "")
if not session_token: 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 # 验证 session token
token_manager = get_token_manager() token_manager = get_token_manager()
if not token_manager.verify_token(session_token): 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 # 生成临时 WebSocket token
ws_token = generate_ws_token(session_token) ws_token = generate_ws_token(session_token)