From 1d633e1cfece79a40898c1d2079f7b59f2544d9b Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 6 Aug 2025 16:41:18 +0800 Subject: [PATCH] perf: Token expired message --- backend/apps/system/middleware/auth.py | 26 +++++++++++++++----------- backend/locales/en.json | 3 ++- backend/locales/zh-CN.json | 3 ++- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/backend/apps/system/middleware/auth.py b/backend/apps/system/middleware/auth.py index be44d814..32fa4c71 100644 --- a/backend/apps/system/middleware/auth.py +++ b/backend/apps/system/middleware/auth.py @@ -61,11 +61,11 @@ class TokenMiddleware(BaseHTTPMiddleware): schema, param = get_authorization_scheme_param(token) if schema.lower() != "bearer": return False, f"Token schema error!" - payload = jwt.decode( - param, settings.SECRET_KEY, algorithms=[security.ALGORITHM] - ) - token_data = TokenPayload(**payload) try: + payload = jwt.decode( + param, settings.SECRET_KEY, algorithms=[security.ALGORITHM] + ) + token_data = TokenPayload(**payload) with Session(engine) as session: session_user = await get_user_info(session = session, user_id = token_data.id) if not session_user: @@ -80,7 +80,10 @@ class TokenMiddleware(BaseHTTPMiddleware): raise Exception(message) return True, session_user except Exception as e: - SQLBotLogUtil.exception(f"Token validation error: {str(e)}") + msg = str(e) + SQLBotLogUtil.exception(f"Token validation error: {msg}") + if 'expired' in msg: + return False, jwt.ExpiredSignatureError(trans('i18n_permission.token_expired')) return False, e @@ -90,13 +93,14 @@ class TokenMiddleware(BaseHTTPMiddleware): schema, param = get_authorization_scheme_param(assistantToken) if schema.lower() != "assistant": return False, f"Token schema error!" - payload = jwt.decode( - param, settings.SECRET_KEY, algorithms=[security.ALGORITHM] - ) - token_data = TokenPayload(**payload) - if not payload['assistant_id']: - return False, f"Miss assistant payload error!" + try: + payload = jwt.decode( + param, settings.SECRET_KEY, algorithms=[security.ALGORITHM] + ) + token_data = TokenPayload(**payload) + if not payload['assistant_id']: + return False, f"Miss assistant payload error!" with Session(engine) as session: """ session_user = await get_user_info(session = session, user_id = token_data.id) session_user = UserInfoDTO.model_validate(session_user) """ diff --git a/backend/locales/en.json b/backend/locales/en.json index e16612b5..acee9415 100644 --- a/backend/locales/en.json +++ b/backend/locales/en.json @@ -25,7 +25,8 @@ "i18n_permission": { "only_admin": "Only administrators can call this!", "no_permission": "No permission to access {url}{msg}", - "authenticate_invalid": "Authenticate invalid [{msg}]" + "authenticate_invalid": "Authenticate invalid [{msg}]", + "token_expired": "Token has expired" }, "i18n_llm": { "validate_error": "Validation failed [{msg}]", diff --git a/backend/locales/zh-CN.json b/backend/locales/zh-CN.json index 93da611a..77ea01aa 100644 --- a/backend/locales/zh-CN.json +++ b/backend/locales/zh-CN.json @@ -25,7 +25,8 @@ "i18n_permission": { "only_admin": "仅支持管理员调用!", "no_permission": "无权调用{url}{msg}", - "authenticate_invalid": "认证无效【{msg}】" + "authenticate_invalid": "认证无效【{msg}】", + "token_expired": "Token 已过期" }, "i18n_llm": {