From cc4aa647c5f683a0d31a33faec2361807fee2814 Mon Sep 17 00:00:00 2001 From: Blizzard Date: Fri, 17 Jul 2026 16:55:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20401=20=E4=B8=8D=E5=86=8D=E8=AF=AF=E6=8A=A5=E4=B8=BA?= =?UTF-8?q?=E3=80=8C=E7=99=BB=E5=BD=95=E5=B7=B2=E8=BF=87=E6=9C=9F=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - client 原将所有 401 当会话过期处理,覆盖了登录接口的凭据错误消息 - 排除 /admin/login,登录失败改为显示后端真实提示(用户名或密码错误) Co-Authored-By: Claude Opus 4.8 --- admin/src/api/client.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/admin/src/api/client.ts b/admin/src/api/client.ts index dc181b0..acc16b9 100644 --- a/admin/src/api/client.ts +++ b/admin/src/api/client.ts @@ -42,7 +42,9 @@ export async function request( const res = await fetch(path, { ...init, headers }) - if (res.status === 401) { + // 登录接口的 401 是「凭据错误」,交给下方按后端 message 处理; + // 其它接口的 401 才视为会话过期:清 token 并跳登录页 + if (res.status === 401 && !path.includes('/admin/login')) { clearToken() // basename=/admin,登录路由实际是 /admin/login if (!window.location.pathname.endsWith('/login')) {