Условие частной гонки с аутентификацией Redux PassportJS - PullRequest
0 голосов
/ 30 января 2019

Я новичок в стеке MERN и пытаюсь реализовать вход в систему, используя React & Redux на внешнем интерфейсе и PassportJS, Node & Express на внутреннем.Хотя вход в систему в настоящее время работает, существует условие гонки, которое я еще не нашел способ исправить: если я введу приватный маршрут реакции-маршрутизатора со следующим:

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route {...rest} render={(props) => props.auth ? <Component {...props} /> : <Redirect to={{
    pathname: '/login',
    search: `?from=${encodeURIComponent(props.location.pathname)}`,
  }} />} />
);

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

export const fetchUser = () => async dispatch => {
        const res = await axios.get('/api/current_user');
        dispatch({type: FETCH_USER, payload: res.data});
};

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

Кто-нибудь имеет какие-либо идеи о том, как обойти это, и, возможно, маршрутизатор дождется завершения вызова Redux?

...