blob: ea53b10451d12c16c36f876c1e374eecf355bbbb [file] [log] [blame]
ybt02e716d2025-04-15 17:19:32 +08001import { Navigate } from 'react-router-dom';
2import { useEffect, useState } from 'react';
3import { Spin } from 'antd';
4
5const ProtectedRoute = ({ children }) => {
6 const [loading, setLoading] = useState(true);
7 const [isAuthenticated, setIsAuthenticated] = useState(false);
8
9 useEffect(() => {
10 // 简单检查是否有token
11 const token = localStorage.getItem('token');
12 if (token) {
13 setIsAuthenticated(true);
14 }
15 setLoading(false);
16 }, []);
17
18 if (loading) {
19 return (
20 <div className="flex justify-center items-center h-screen">
21 <Spin spinning={loading} fullScreen tip="加载中...">
22 {children}
23 </Spin>
24 </div>
25 );
26 }
27
28 if (!isAuthenticated) {
29 return <Navigate to="/login" replace />;
30 }
31
32 return children;
33};
34
35export default ProtectedRoute;