На React Router, как оставаться в системе, даже обновив страницу?

Я делаю сайт с React и React Router с Redux. Многие маршруты (страницы) требуют входа в систему. Я могу перенаправить на вход, если пользователь не вошел в систему, как это:

function requireAuth(nextState, replace) {
    let loggedIn = store.getState().AppReducer.UserReducer.loggedIn;

    if(!loggedIn) {
        replace({
            pathname: '/login',
            state: {
                nextpathname: nextState.location.pathname
            }
        });
    }
}

ReactDOM.render(
    <Provider store={store}>
        <Router history={history}>
            <Route path="/" component={App}>
                <IndexRoute component={Index} />
                <Route path="login" component={Login} />
                <Route path="register" component={Register} />
                <Route path="dashboard" component={Graph} onEnter={requireAuth}>
                    ... some other route requires logged in ...
                </Route>
            </Route>
        </Router>
    </Provider>,
    document.getElementById('entry')
);

Посмотрите код, я использовал ловушку onEnter для перенаправления на маршрут '/ login', если пользователь не вошел в систему. Данные для проверки пользователя, вошедшего в систему, находятся в хранилище, и он обновится после того, как пользователь вошел в систему.

Он работает отлично, но проблема в том, что когда я обновляю страницу, хранилище будет сброшено, и пользователь не войдет в состояние назад.

Я знаю, что это происходит потому, что хранилище Redux - это просто хранилище памяти, поэтому при обновлении страницы все данные будут потеряны.

Проверять сеанс сервера при каждом обновлении можно, но это может быть слишком много запросов, так что это выглядит плохой идеей.

Сохранение зарегистрированных данных состояния в localStorage может оказаться полезным, но в этом случае я должен проверить, что при каждом вызове AJAX происходит сбой, запрос отклоняется, потому что сеанс истек или не существует как-то, и это тоже выглядит как плохая идея.

Есть ли способ решить эту проблему более четко? На моем сайте будет много людей, поэтому я хочу сократить количество звонков XHR.

Любой совет будет очень признателен.

Ответы на вопрос(2)

Ваш ответ на вопрос