fix: redirect expired sessions to login
This commit is contained in:
+9
-3
@@ -300,12 +300,18 @@ export async function loader({ request }: LoaderFunctionArgs) {
|
||||
if (error instanceof Error && error.name === 'AuthenticationError') {
|
||||
console.warn("⚠️ [Root Loader] Token 过期,重定向到登录页");
|
||||
// 保存当前路径,登录后可以跳转回来
|
||||
const redirectTo = pathname !== '/login' ? pathname : '/';
|
||||
return redirect(`/login?redirect=${encodeURIComponent(redirectTo)}`);
|
||||
const redirectTo = pathname !== '/login' ? `${pathname}${url.search}` : '/';
|
||||
return redirect(`/login?expired=true&redirect=${encodeURIComponent(redirectTo)}`);
|
||||
}
|
||||
|
||||
console.warn("⚠️ [Root Loader] 获取用户会话失败:", error);
|
||||
// 保持默认值 'common'
|
||||
|
||||
// 非公共页只要服务端会话初始化失败,就直接回登录页,
|
||||
// 避免落入“角色=common + 菜单全空”的假登录状态。
|
||||
if (!isPublicPath) {
|
||||
const redirectTo = pathname !== '/login' ? `${pathname}${url.search}` : '/';
|
||||
return redirect(`/login?expired=true&redirect=${encodeURIComponent(redirectTo)}`);
|
||||
}
|
||||
}
|
||||
|
||||
// 注意:认证检查和重定向已在 getUserSession() 中统一处理
|
||||
|
||||
Reference in New Issue
Block a user