【发布时间】:2017-09-05 16:29:21
【问题描述】:
我对 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'));
});
}
}
我将email 和password 发送到一个网址。如果是response.data.result_status == "success",那么我将用户信息(如他们的姓名和电子邮件)设置为localStorage 令牌并调用AUTHENTICATE_USER,它将另一个localStorage 项设置为true。
由于我使用的是 localStorage,因此在我重新加载时数据仍然存在。只要经过身份验证的 localStorage 没有设置为 null,我就会留在系统上。
但是,现在我们希望在 cookie 的会话没有过期的情况下在系统上停留尽可能长的时间。目前,我根据设置为本地存储的令牌而不是 cookie 留在系统上。
后端没有使用 JWT,只是一个 cookie。有没有办法让我检查 cookie 是否仍在与 axios 会话?
【问题讨论】:
-
您无法在 XHR 中检查响应 cookie。您可以在发出请求之前和之后比较 cookie。
-
@elmeister 感谢您的回复。我如何“检查”cookie?我需要将其设置为 localStorage 中的令牌吗?
-
是您对
${API_URL}/users/authenticate的调用设置了会话cookie 吗? -
@JulienTASSIN 是的。但目前我只是设置了另一个令牌,告诉我我已通过系统身份验证。我只使用带有 {with Credential} 的会话 cookie 来发出我的 api 请求。
标签: reactjs session authentication cookies