Универсальный Auth Redux & React Router
У меня возникли некоторые проблемы с аутентификацией с помощью редукционного и реагирующего маршрутизатора, и я надеюсь получить разъяснения о том, как наилучшим образом решить мою проблему.
У меня есть компонент входа, который при отправке отправляет следующее действие:
export const loginUser = (creds) => {
return dispatch => {
dispatch(requestLogin(creds))
return fetch('http://127.0.0.1:4000/api/login', {
...
})
.then(res => {
dispatch(receiveLogin())
browserHistory.push('/admin')
...
})
...
}
}
Действие receiveLogin обновляет флаг isAuthenticated в состоянии до true. Мой защищенный маршрут имеет следующий хук onEnter:
export default (state) => {
return {
path: '/',
component: App,
childRoutes: [
{
path: 'protected',
component: Protected,
...
onEnter(nextState, replaceState) {
const loggedIn = //check state.isAuthenticated
if (!loggedIn) {
replaceState(null, 'login')
}
}
}
]
}
}
Как видите, я передаю состояние в качестве аргумента. Это дает мне доступ к исходному состоянию как с сервера, так и с клиента. Однако после того, как произойдет мое действие по входу в систему, очевидно, что хук onEnter все еще будет использовать начальное состояние.
То, что я хочу знать, - лучший способ получить текущее состояние после обновления флага isAuthenticated и использовать его вместо этого в моем хуке onEnter. Или же мой подход полностью ошибочен, и я должен делать это совсем по-другому?