feat: 1. 添加axios全局路由拦截进行自动添加请求jwt。 2.重新整理路由表。 3. 文档列表新增版本差异对比。 4.菜单路由可访问列表通过对接接口返回,添加全局路由检测。
5. 修改统一认证登录和管理员登录是通过接口形式进行,存储返回的accessToken。 6. 修改交叉评查的部分样式
This commit is contained in:
+34
-14
@@ -28,38 +28,58 @@ export async function action({ request }: ActionFunctionArgs) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 验证用户登录状态
|
||||
// 获取用户信息(不再检查服务端认证)
|
||||
export async function loader({ request }: LoaderFunctionArgs) {
|
||||
const { isAuthenticated, userRole, userInfo } = await getUserSession(request);
|
||||
// ⚠️ 不再检查服务端 session 认证
|
||||
// 认证检查由 ClientAuthGuard 在客户端进行
|
||||
|
||||
if (!isAuthenticated) {
|
||||
return redirect("/login");
|
||||
}
|
||||
const { userRole, userInfo } = await getUserSession(request);
|
||||
|
||||
// 返回用户信息给客户端(可能为空)
|
||||
return Response.json({ userRole, userInfo });
|
||||
}
|
||||
|
||||
export default function Index() {
|
||||
const navigate = useNavigate();
|
||||
const { userRole, userInfo } = useLoaderData<typeof loader>();
|
||||
const loaderData = useLoaderData<typeof loader>();
|
||||
const [currentDateTime, setCurrentDateTime] = useState({
|
||||
date: '',
|
||||
time: ''
|
||||
});
|
||||
|
||||
|
||||
// 检查是否通过51707端口访问
|
||||
const [isPort51707, setIsPort51707] = useState(false);
|
||||
|
||||
|
||||
// 用户信息:优先使用服务端返回的,否则从 localStorage 读取
|
||||
const [userInfo, setUserInfo] = useState(loaderData.userInfo);
|
||||
const [userRole, setUserRole] = useState(loaderData.userRole);
|
||||
|
||||
useEffect(() => {
|
||||
if (typeof window !== 'undefined') {
|
||||
setIsPort51707(window.location.port === '51707');
|
||||
// setIsPort51707(window.location.port === '5178');
|
||||
}
|
||||
}, []);
|
||||
|
||||
// 打印服务器端传递的用户角色
|
||||
// 如果服务端没有返回用户信息,从 localStorage 读取
|
||||
if (!loaderData.userInfo || !loaderData.userRole) {
|
||||
const storedUserInfoStr = localStorage.getItem('user_info');
|
||||
if (storedUserInfoStr) {
|
||||
try {
|
||||
const storedUserInfo = JSON.parse(storedUserInfoStr);
|
||||
console.log('📖 [Index] 从 localStorage 读取用户信息:', storedUserInfo);
|
||||
setUserInfo(storedUserInfo);
|
||||
setUserRole(storedUserInfo.user_role || '');
|
||||
} catch (error) {
|
||||
console.error('❌ [Index] 解析 localStorage 用户信息失败:', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [loaderData.userInfo, loaderData.userRole]);
|
||||
|
||||
// 打印用户角色
|
||||
useEffect(() => {
|
||||
console.log('_index 服务器返回的用户角色:', userRole);
|
||||
}, [userRole]);
|
||||
console.log('📋 [Index] 当前用户角色:', userRole);
|
||||
console.log('👤 [Index] 当前用户信息:', userInfo);
|
||||
}, [userRole, userInfo]);
|
||||
|
||||
// 更新日期时间
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user