feat: 1. 修改完善全局路由检测。 2. 完善统一的token认证管理,token失效自动跳转到登录页。
This commit is contained in:
+17
-2
@@ -48,9 +48,15 @@ export const meta: MetaFunction = () => {
|
||||
export async function loader({ request }: LoaderFunctionArgs) {
|
||||
try {
|
||||
// 从根loader获取用户角色
|
||||
const { userRole, userInfo, frontendJWT } = await getUserSession(request);
|
||||
const { userRole, userInfo, frontendJWT, isAuthenticated } = await getUserSession(request);
|
||||
|
||||
// 🔑 检查用户是否已登录且有用户信息
|
||||
if (!isAuthenticated || !userInfo) {
|
||||
console.warn("⚠️ [Home Loader] 用户未登录或缺少用户信息,重定向到登录页");
|
||||
const url = new URL(request.url);
|
||||
return Response.redirect(`/login?redirect=${encodeURIComponent(url.pathname)}`, 302);
|
||||
}
|
||||
|
||||
|
||||
// 返回默认值,实际数据将在客户端根据 sessionStorage 加载
|
||||
return Response.json({
|
||||
homeData: {
|
||||
@@ -101,6 +107,15 @@ export default function Home() {
|
||||
});
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
// const userRole = serverUserRole as UserRole;
|
||||
|
||||
// 🔑 防御性检查:如果 userInfo 不存在,重定向到登录页(理论上不应该发生,因为 loader 已经检查了)
|
||||
if (!userInfo) {
|
||||
console.error("❌ [Home] userInfo 不存在,重定向到登录页");
|
||||
if (typeof window !== 'undefined') {
|
||||
window.location.href = '/login';
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// 打印服务器端传递的用户角色
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user