From d56251a4e77869b2cabeb80c1a36f82db04e5c77 Mon Sep 17 00:00:00 2001 From: yumusb <43062104+yumusb@users.noreply.github.com> Date: Wed, 15 Apr 2026 20:38:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E6=97=B6=E5=BC=BA=E5=88=B6=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E7=9A=84=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端在检测到 401 或本地无 token 时不再自动跳转到 /login, 改为仅清理本地缓存并抛出错误,由调用方自行决定后续行为。 Co-Authored-By: Claude Opus 4.6 --- web/src/admin/components/PrivateRoute.tsx | 5 ++--- web/src/admin/pages/AdminLayout/index.tsx | 1 - web/src/api/request.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/web/src/admin/components/PrivateRoute.tsx b/web/src/admin/components/PrivateRoute.tsx index d27aabc..82d5fee 100644 --- a/web/src/admin/components/PrivateRoute.tsx +++ b/web/src/admin/components/PrivateRoute.tsx @@ -1,4 +1,3 @@ -import { Navigate } from 'react-router-dom'; import type { ReactNode } from 'react'; interface PrivateRouteProps { @@ -13,9 +12,9 @@ const PrivateRoute = ({ children }: PrivateRouteProps) => { const token = localStorage.getItem('token'); const userInfo = localStorage.getItem('userInfo'); - // 如果没有登录信息,重定向到登录页 + // 如果没有登录信息,返回空占位 if (!token || !userInfo) { - return ; + return null; } // 已登录,渲染子组件 diff --git a/web/src/admin/pages/AdminLayout/index.tsx b/web/src/admin/pages/AdminLayout/index.tsx index 210a369..4b885b1 100644 --- a/web/src/admin/pages/AdminLayout/index.tsx +++ b/web/src/admin/pages/AdminLayout/index.tsx @@ -90,7 +90,6 @@ const AdminLayout = () => { const userInfoStr = localStorage.getItem('userInfo'); if (!token || !userInfoStr) { - navigate('/login'); return; } diff --git a/web/src/api/request.ts b/web/src/api/request.ts index dc42f9d..7c95398 100644 --- a/web/src/api/request.ts +++ b/web/src/api/request.ts @@ -81,7 +81,6 @@ const sendRequest = async (url: string, config: RequestConfig = {}): Promise< if (response.status === 401) { localStorage.removeItem('token'); localStorage.removeItem('userInfo'); - window.location.href = '/login'; throw new HttpError('未认证或认证已过期', { status: response.status, statusText: response.statusText,