我正在尝试获取一个cookie,当用户登录时我将其保存为(httpOnly)。当我从服务器端恢复此cookie时出现了问题。我发送它以进行响应并保存在减速器中,但是在刷新路由器过程中,用户似乎未登录。任何解决方案?
更新:
表达代码:
let token = jwt.sign({
id: usuario.dataValues.id,
identifier: response.dataValues.email,
firma: firma
}, 'privatekey', (err, tk) => {
if (err) { console.log(err) }
let caducidad = 4 * 24 * 3600 * 1000;
const options = {
httpOnly: true,
signed: true,
maxAge: caducidad,
expires: new Date(Date.now() + caducidad)
};
res.cookie('token', tk, options).status(200);
res.status(200).json({ success: true, tk, user: response.dataValues })
})
反应获取:
export const getCookie = async () => {
await axios.post('/api/getCookie')
.then(res => {
if(res.data.token && res.data.token !== undefined) {
const user:User = jwtDecode(res.data.token);
axios.post('/api/comprobarFirma', {id: user.id, firma: user.firma})
.then(response => {
if (response.data.find) {
dispatch({type: 'setUser', payload: user});
console.log(user);
}else{
destroyCookie();
}
})
}else{
destroyCookie();
}
});
};
根据您的描述,您正在尝试设置cookie(在某个时候),然后根据此cookie对渲染内容进行响应(用户信息,授权或仅纯会话会话跟踪。
但是,您说的是这样的话:“问题是在读取cookie之前,反应会渲染路由器”。 React无法读取httponly cookie。 React仍然是javascript框架的一部分。在cookie上设置httponly较为安全,但会限制其对浏览器和服务器的访问。