Я делаю веб-страницу с защищенной маршрутизацией. Только моя страница входа в систему является общедоступной, а все остальные страницы являются закрытыми, поэтому, когда кто-то посещает другой URL-адрес, он проверяет, есть ли у пользователя действительный токен и т. Д.
Проблема в том, что даже когда я захожу на страницу входа в систему, функция verifytoken по-прежнему вызывается, хотя у меня нет доступа к частному URL.
Итак, текущая ситуация:
(без действительного логина)
- Я захожу на localhost: 3000, я вижу свою публичную страницу входа. В консоли я вижу, что моя функция verifytoken вызывается.
- Я захожу на локальный хост: 3000 / клиентов, я вижу свою публичную страницу входа. в консоли я вижу, что мой verifytoken вызван дважды
ожидаемая ситуация:
- я перехожу на localhost: 3000, я вижу свою публичную страницу, но функция verifytoken не вызывается
- Я захожу на локальный хост: 3000 / клиентов, я вижу свою общедоступную страницу, и проверочный ток вызывается один раз
Кроме того, всякий раз, когда я добавляю больше защищенных маршрутизованных в коммутаторе, всякий раз, когда я иду на 1 защищенный маршрут, он выполняет функцию для каждого защищенного маршрута в этом операторе коммутатора
Это нормальное и приемлемое поведение? Потому что я не могу найти много информации об этом, и я думал, что оператор switch был решением для этого.
код:
//Protected route only for authenticated users
const ProtectedRoute = ({ isAllowed, ...props }) => (isAllowed ? <Route {...props} /> : <Redirect to="/login" />)
export default class Router extends Component {
render() {
return (
<Switch>
{/*Does / route need to be protected? pro's, cons?*/}
<Route exact path="/" component={Login} />
<Route exact path="/login" component={Login} />
<Route path="/404" component={NotFound} />
<ProtectedRoute isAllowed={isTokenVerified()} exact path="/clients" component={ClientOverview} />
<Redirect from="*" to="/404" />
</Switch>
)
}
}