From 52b59019d0a5bf9cb582d598d3e0db7162697684 Mon Sep 17 00:00:00 2001 From: developer Date: Sun, 12 Jul 2026 13:44:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=BC=E5=AE=B9=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=B1=82=20401=20=E5=93=8D=E5=BA=94=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 除 HTTP 状态码 401 外,同时处理业务层 code=401 的响应 - 两种 401 均清除登录态并跳转登录页 --- src/utils/request.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index 8dbd50f..c7aedee 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -12,14 +12,21 @@ const axiosInstance = axios.create({ const handleError = (error: any) => { - // 401 未授权:token 过期或未登录,直接跳转登录页 + // 401 未授权(HTTP 层):token 过期或未登录 if (error?.response?.status === 401) { localStorage.removeItem("isLoggedIn"); router.push("/login"); return Promise.reject(error); } - // 业务异常由 validateResponse 负责提示,这里透传,避免被网络错误文案覆盖。 + // 401 未授权(业务层):后端 GlobalExceptionHandler 返回 code=401 + if (error && typeof error === "object" && error.code === 401) { + localStorage.removeItem("isLoggedIn"); + router.push("/login"); + return Promise.reject(error); + } + + // 其他业务异常(如 code !== 200)透传,由调用方自行提示 if (error && typeof error === "object" && "code" in error && !error.response) { return Promise.reject(error); }