los*_*193 6 authentication cookies session reactjs
我对React中的会话cookie有疑问.
目前,这是我对用户进行身份验证的方式:
export function loginUser({ email, password }) {
return function(dispatch) {
axios.post(`${API_URL}/users/authenticate`, { email, password }, { withCredentials: true })
.then((response) => {
if (response.data.result_status == "success") {
localStorage.setItem("token", JSON.stringify(response.data.user))
dispatch({ type: AUTHENTICATE_USER });
browserHistory.push("/home");
})
}
})
.catch(() => {
dispatch(authError('Incorrect Login Info'));
});
}
}
Run Code Online (Sandbox Code Playgroud)
我发送email和发送password到网址.如果是response.data.result_status == "success",那么我将用户信息(如他们的姓名和电子邮件)设置为localStorage令牌,然后我调用AUTHENTICATE_USER另一个localStorage项目为true.
由于我使用的是localStorage,因此重新加载时数据仍然存在.只要经过身份验证的localStorage未设置为null,我就会继续使用该系统.
但是,现在我们希望系统保持在LONG状态,因为cookie的会话未过期.目前,我根据我设置为本地存储的令牌而不是cookie来保留系统.
后端不使用JWT,只是一个cookie.有没有办法让我检查cookie是否仍在与axios会话?
Tom*_*aey 11
唯一一个知道cookie中的会话仍处于活动状态的是API,因此在这一侧你需要检查来自cookie的会话是否仍处于活动状态.我假设您将401 Unauthenticated在未登录时收到,因此您可以检查每个请求的响应的状态代码,并在会话过期时删除localStorage项目.
axios.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
// Do something with response error
if (error.status === 401) {
// DELETE YOUR AUTHENTICATE_USER item from localStorage
}
return Promise.reject(error);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19365 次 |
| 最近记录: |