Реагировать принудительно маршрутизатора на другую страницу, если переменная не существует
Интересно, есть ли у реагирующего маршрутизатора способ выгрузить маршрут, чтобы проверить переменную, например, переменную сеанса, и, если эта переменная не существует, направить куда-то еще или нет вообще? Этот вопрос связан с историей браузера.
Мой сценарий таков: когда пользователь входит в систему, появляются определенные маршруты. Если этот пользователь выходит из системы, эти маршруты не отображаются на экране. Однако, поскольку у меня есть история браузера, вышедший из системы пользователь может видеть ограниченные маршруты, нажав кнопку "Назад". Поскольку я не могу очистить историю браузера, я подумал, что если вызывается ограниченный маршрут - будь то через маршрутизатор или через историю - есть способ выгрузить вызов и проверить, вошел ли пользователь в систему, прежде чем разрешить этот маршрут. продолжать.
Мы ценим любые предложения.
1 ответ
Я обращаюсь с этим в моем приложении с AuthenticatedRoute
составная часть:
import React from 'react';
import { withRouter } from 'react-router'
import { Route, Redirect } from 'react-router-dom';
const AuthenticatedRoute = ({component: Component, ...rest}) => {
return session.VARIABLE
? <Route render={ props => <Component {...props} {...rest} />} />
: <Redirect to="/login" />;
};
export default withRouter(AuthenticatedRoute);
Использование:
<AuthenticatedRoute path="/path" component={MyComponent} />
Если переменная существует, она возвращает нормальный Route
, но если он не существует, он возвращает Redirect
Компонент, который немедленно перенаправит пользователя по указанному пути.