Есть приложение на React, с авторизацией и всеми делами. Почему-то вылетает авторизация при обновлении страницы.
Токен и таймаут сохраняю в localStorage. Туда при логине всё записывается корректно.
Исходя из этого, резонно подозреваю что прокосячился где-то при проверке. Но не могу понять где.
Вот authCheckState, которая по идее должна проверять данные из localStorage и если всё в порядке, инициализировать authSuccess с нужным токеном.
export const authCheckState = () => {
return dispatch => {
const token = localStorage.getItem('token');
if (token === undefined) {
dispatch(authLogout());
} else {
const expirationDate = new Date(localStorage.getItem('expirationDate'));
if ( expirationDate <= new Date() ) {
dispatch(authLogout());
} else {
dispatch(authSuccess(token));
dispatch(checkAuthTimeout( (expirationDate.getTime() - new Date().getTime()) / 1000) );
}
}
}
}
Вот место, откуда она вызывается
class App extends Component {
componentDidMount() {
this.props.onTryAutoSignup();
}
render() {
return (
<div>
<Router>
<CustomLayout {...this.props}>
<BaseRouter />
</CustomLayout>
</Router>
</div>
);
}
}
const mapStateToProps = state => {
return {
isAuthenticated: state.token !== null
}
}
const mapDispatchToProps = dispatch => {
return {
onTryAutoSignup: () => dispatch(actions.authCheckState)
}
}
Вот сама authSuccess
export const authSuccess = token => {
return {
type: actionTypes.AUTH_SUCCESS,
token: token,
}
}
Ожидаю, что после обновления у меня будет AUTH_SUCCESS и токен в state. Но в итоге ничего не происходит. Redux-dev-tools показывает @@INIT и пустой state.