fix(web): 守卫跳转登录页前清除 cookie,修复 cookie 与 localStorage 不一致导致的无限重定向白屏

(main)/layout.tsx 的客户端守卫判定未登录时只跳 /login,未清 cookie;
而 proxy.ts 仅凭 cookie 是否存在放行,二者在 cookie 存在但 localStorage
为空时互相弹跳 → 无限重定向 → 白屏。跳转前调用 auth.clearToken() 同步
清除两处凭证,与退出登录/401 处理的既有约定保持一致。

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Autumn-27andClaude Opus 4.8 committed 2026-08-07 09:43:30 -04:00
1 parent 89e6df837a
commit 3c8a9f74f8
1 file changed
+4
+4
View File
@@ -37,6 +37,10 @@ export default function Layout({ children }: Readonly<{ children: ReactNode }>)
if (auth.getToken()) {
setAuthed(true);
} else {
// 客户端守卫认为未登录时,必须同时清掉 cookie:否则 proxy.ts 仅凭
// “cookie 存在”就把我们从 /login 又重定向回主界面,与本守卫来回弹跳
// 形成无限重定向 → 白屏(cookie 与 localStorage 不一致时触发)。
auth.clearToken();
window.location.href = "/login";
}
}, []);