From 1827093a9f99e400bca9588c2fb39b3af19c0b40 Mon Sep 17 00:00:00 2001 From: cat_shark <1716967236@qq.com> Date: Thu, 18 Jun 2026 00:10:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E7=9A=84=E8=AF=B7=E6=B1=82=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index ad1f22e..c9e27c9 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -1,5 +1,6 @@ import axios from 'axios'; -import { ElMessage } from "element-plus"; +import { ElMessage, ElMessageBox } from "element-plus"; +import router from "@/router"; const basic_url = import.meta.env.VITE_BASE_URL; @@ -12,8 +13,27 @@ const axiosInstance = axios.create({ const handleError = (error: any) => { console.log(error); + // 401 未授权:token 过期或未登录(优先检查,避免被后续逻辑拦截) + if (error?.response?.status === 401) { + ElMessageBox.confirm( + '登录已过期,请重新登录', + '提示', + { + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + localStorage.removeItem("isLoggedIn"); + router.push("/login"); + }).catch(() => { + // 用户点击取消,不做处理 + }); + return Promise.reject(error); + } + // 业务异常由 validateResponse 负责提示,这里透传,避免被网络错误文案覆盖。 - if (error && typeof error === "object" && "code" in error) { + if (error && typeof error === "object" && "code" in error && !error.response) { return Promise.reject(error); }