import React from 'react'; import { Navigate } from 'react-router-dom'; import { useSelector } from 'react-redux'; const ProtectedRoute = ({ children, requiredRole }) => { const { isAuthenticated, user } = useSelector(state => state.auth); // 未登录,重定向到登录页 if (!isAuthenticated) { return ; } // 已登录但角色不匹配 if (requiredRole && user?.role !== requiredRole) { // 根据用户角色重定向到对应页面 if (user?.role === 'teacher') { return ; } else if (user?.role === 'student') { return ; } return ; } // 验证通过,渲染子组件 return children; }; export default ProtectedRoute;