mirror of
https://gitee.com/san-bing/JChargePointProtocol
synced 2026-06-19 22:50:51 +08:00
41 lines
909 B
TypeScript
41 lines
909 B
TypeScript
/*
|
||
* 开源代码,仅供学习和交流研究使用,商用请联系三丙
|
||
* 微信:mohan_88888
|
||
* 抖音:程序员三丙
|
||
* 付费课程:https://www.bilibili.com/cheese/play/ss942400790
|
||
*/
|
||
import React from 'react';
|
||
import {Navigate} from 'react-router-dom';
|
||
import {Spin} from 'antd';
|
||
import {useAuth} from '../contexts/AuthContext';
|
||
|
||
interface ProtectedRouteProps {
|
||
children: React.ReactNode;
|
||
}
|
||
|
||
const ProtectedRoute: React.FC<ProtectedRouteProps> = ({ children }) => {
|
||
const { isAuthenticated, loading } = useAuth();
|
||
|
||
if (loading) {
|
||
return (
|
||
<div style={{
|
||
display: 'flex',
|
||
justifyContent: 'center',
|
||
alignItems: 'center',
|
||
height: '100vh'
|
||
}}>
|
||
<Spin size="large" />
|
||
</div>
|
||
);
|
||
}
|
||
|
||
if (!isAuthenticated) {
|
||
return <Navigate to="/login" replace />;
|
||
}
|
||
|
||
return <>{children}</>;
|
||
};
|
||
|
||
export default ProtectedRoute;
|
||
|