Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用react+进行身份验证;本地存储_Javascript_Reactjs_Authentication_Async Await_Local Storage - Fatal编程技术网

Javascript 使用react+进行身份验证;本地存储

Javascript 使用react+进行身份验证;本地存储,javascript,reactjs,authentication,async-await,local-storage,Javascript,Reactjs,Authentication,Async Await,Local Storage,我编写下面的代码来验证react,但有一个问题。用户登录后,在本地存储中设置令牌并将用户重定向到仪表板,在此页面中检查本地存储中的令牌,如果不存在,将用户重定向到登录页面,我的问题就在这里!!当进入仪表板页面时无法获取令牌,因为返回null给我,但如果刷新页面返回令牌 事实上,我很抱歉在设定之后无法获得令牌 我的密码是: export const userLogin = (data) => { return (dispatch) => { return axi

我编写下面的代码来验证react,但有一个问题。用户登录后,在本地存储中设置令牌并将用户重定向到仪表板,在此页面中检查本地存储中的令牌,如果不存在,将用户重定向到登录页面,我的问题就在这里!!当进入仪表板页面时无法获取令牌,因为返回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');