Недавно я играл с приложением React и настраивал страницу входа пользователя с панелью управления (только если loggedIn === true
). Я сделал это с защищенными маршрутами, и он безупречно работает с приведенным ниже кодом:
const App = () => {
return (
<AuthProvider>
<Router>
<Switch>
<Route exact path="/" component={LandingPage} />
<Route exact path="/LoginPage" component={LoginPage} />
<Route exact path="/SignUpPage" component={SignUpPage} />
<PrivateRoute exact path = "/HomePage" component={HomePage} />
<Route exact path = "*" component={PageNotFoundPage} />
</Switch>
</Router>
</AuthProvider>
);
};
и с PrivateRoute
const PrivateRoute = ({ component: RouteComponent, ...rest }) => {
const {currentUser} = useContext(AuthContext);
//If login is good, allow access or redirect to login
if (!!currentUser) {
return(
<Route
{...rest}
render={routeProps =>
<RouteComponent {...routeProps}
currentUser={currentUser}/>
}
/>
)
} else {
//Bad login
return(
<Route
{...rest}
render={routeProps => (
<Redirect to={"/LoginPage"} />
)
}
/>
)
}
};
Мой вопрос: если бы я сказал, что у меня есть разные типы вошли в систему пользователи с совершенно разными функциями, но в одном приложении, нужно ли мне иметь два разных PrivateRoute
, например PrivateRouteTeacher
и PrivateRouteStudent
? Или в этом нет необходимости, и может быть лучше просто проверить userType
в одном PrivateRoute
?