Причина, по которой маршрутизатор перенаправляет на приборную панель даже не прошедшего проверку пользователя, заключается в том, что isAuthenticated
является функцией. После этого вам нужно вызвать эту функцию:
export function PrivateRoute({children, ...props}) {
return (
<Route {...props} render={( {location} ) =>
isAuthenticated() ? children : <Redirect to="/sign-in" />
}
/>
);
}
const isAuthenticated = () => {
const userToken = JSON.parse(sessionStorage.getItem("user-token"));
return userToken ? true : false'
}
Если вы не хотите вызывать функцию каждый раз при изменении маршрута, вы можете реализовать функцию, вызываемую немедленно:
const isAuthenticated = (() => {
const userToken = JSON.parse(sessionStorage.getItem("user-token"));
return userToken ? true : false'
})()
export function PrivateRoute({children, ...props}) {
return (
<Route {...props} render={( {location} ) =>
isAuthenticated ? children : <Redirect to="/sign-in" />
}
/>
);
}