аутентификация с реагировать + локальное хранилище - PullRequest
0 голосов
/ 03 мая 2018

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

На самом деле, я не могу получить токен после того, как установил это.

Мои коды:

export const userLogin = (data) => {
    return (dispatch) => {
        return axios.post(API.USER_LOGIN,data).then((response) => {
            dispatch(loginSuccess());
            setToken(response.data.token);
            dispatch(setUserToken(response.data.token))
        }).then(() => {
            dispatch(fetchUser());
        }).catch((error) => {
            dispatch(setFormErrors({errors: error.response.data}));
        })
    }
};

export const fetchUser = () => {
    return (dispatch, getState) => {
        dispatch(authLoading(true));
        const { userToken } = getState().auth;
        return axios.post(API.CURRENT_USER, null, {
            headers: { authorization: `Bearer ${userToken}` },
        }).then((response) => {
            const { id, name, username, email } = response.data.user;
            dispatch(setCurrentUser({current_user: { id, name, username, email }}));
            dispatch(authLoading(false));
        }).catch((error) => {
            if(error.response.status) {
                dispatch(logout());
            }
        });
    };
};

export const checkToken = () => {
    return async (dispatch, getState) => {
        const token = await getToken();
        const { userToken } = getState().auth;
        if (token || userToken) {
            dispatch(loginSuccess());
            dispatch(fetchUser());
        }
    };
}

export const setToken = token => localStorage.setItem('token', token);
export const getToken = () => localStorage.getItem('token');
export const clearToken = () => localStorage.removeItem('token');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...