fix: openid 不一致清除缓存时保留 URL 参数重新登录(避免跳到无身份登录页)
This commit is contained in:
@@ -32,14 +32,16 @@ function ProtectedRoute() {
|
|||||||
return <Navigate to={`/?token=${encodeURIComponent(urlToken)}`} replace />;
|
return <Navigate to={`/?token=${encodeURIComponent(urlToken)}`} replace />;
|
||||||
}
|
}
|
||||||
|
|
||||||
// URL 中有 openid 且与本地缓存的 token 中的 openid 不一致 → 清除缓存重新登录
|
// URL 中有 openid 且与本地缓存的 token 中的 openid 不一致 → 清除缓存,保留 URL 参数重新登录
|
||||||
if (urlOpenid && token) {
|
if (urlOpenid && token) {
|
||||||
try {
|
try {
|
||||||
const payload = decodeToken(token);
|
const payload = decodeToken(token);
|
||||||
if (payload.openid !== urlOpenid) {
|
if (payload.openid !== urlOpenid) {
|
||||||
console.log('[auth] openid 不一致: URL=' + urlOpenid + ', cache=' + payload.openid + ',清除缓存');
|
console.log('[auth] openid 不一致: URL=' + urlOpenid + ', cache=' + payload.openid + ',清除缓存,保留 URL 参数重新登录');
|
||||||
clearToken();
|
clearToken();
|
||||||
return <Navigate to="/" replace />;
|
// 保留 openid/unionid 等参数跳登录页,LoginPage 会用 URL 的 openid 直接登录
|
||||||
|
const search = new URLSearchParams(window.location.search).toString();
|
||||||
|
return <Navigate to={search ? `/?${search}` : "/"} replace />;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn('[auth] token 解码失败', e);
|
console.warn('[auth] token 解码失败', e);
|
||||||
|
|||||||
Reference in New Issue
Block a user