Реагировать принудительно маршрутизатора на другую страницу, если переменная не существует

Интересно, есть ли у реагирующего маршрутизатора способ выгрузить маршрут, чтобы проверить переменную, например, переменную сеанса, и, если эта переменная не существует, направить куда-то еще или нет вообще? Этот вопрос связан с историей браузера.

Мой сценарий таков: когда пользователь входит в систему, появляются определенные маршруты. Если этот пользователь выходит из системы, эти маршруты не отображаются на экране. Однако, поскольку у меня есть история браузера, вышедший из системы пользователь может видеть ограниченные маршруты, нажав кнопку "Назад". Поскольку я не могу очистить историю браузера, я подумал, что если вызывается ограниченный маршрут - будь то через маршрутизатор или через историю - есть способ выгрузить вызов и проверить, вошел ли пользователь в систему, прежде чем разрешить этот маршрут. продолжать.

Мы ценим любые предложения.

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 Компонент, который немедленно перенаправит пользователя по указанному пути.

Другие вопросы по тегам