diff --git a/frontend/src/app/routes.tsx b/frontend/src/app/routes.tsx index 1364019..f5b271a 100644 --- a/frontend/src/app/routes.tsx +++ b/frontend/src/app/routes.tsx @@ -32,14 +32,16 @@ function ProtectedRoute() { return ; } - // URL 中有 openid 且与本地缓存的 token 中的 openid 不一致 → 清除缓存重新登录 + // URL 中有 openid 且与本地缓存的 token 中的 openid 不一致 → 清除缓存,保留 URL 参数重新登录 if (urlOpenid && token) { try { const payload = decodeToken(token); if (payload.openid !== urlOpenid) { - console.log('[auth] openid 不一致: URL=' + urlOpenid + ', cache=' + payload.openid + ',清除缓存'); + console.log('[auth] openid 不一致: URL=' + urlOpenid + ', cache=' + payload.openid + ',清除缓存,保留 URL 参数重新登录'); clearToken(); - return ; + // 保留 openid/unionid 等参数跳登录页,LoginPage 会用 URL 的 openid 直接登录 + const search = new URLSearchParams(window.location.search).toString(); + return ; } } catch (e) { console.warn('[auth] token 解码失败', e);