feat: 1. 添加axios全局路由拦截进行自动添加请求jwt。 2.重新整理路由表。 3. 文档列表新增版本差异对比。 4.菜单路由可访问列表通过对接接口返回,添加全局路由检测。

5. 修改统一认证登录和管理员登录是通过接口形式进行,存储返回的accessToken。    6. 修改交叉评查的部分样式
This commit is contained in:
2025-11-18 11:06:24 +08:00
parent 8a50671c39
commit bfe39e45a9
53 changed files with 9503 additions and 2796 deletions
+34 -14
View File
@@ -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(() => {