我需要在渲染之前在服务器端读取cookie

时间:2019-10-28 15:23:31

标签: node.js reactjs server-side

我试图获取一个cookie,当用户登录时我将其保存为(httpOnly)。当我从服务器端恢复此cookie时出现了问题。我将其发送以进行响应并保存在reducer中,但是在刷新路由器过程中,用户似乎未登录。有什么解决方法?

更新:

表达代码:

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();
        }
    });

};

1 个答案:

答案 0 :(得分:0)

根据您的描述,您正在尝试设置一个cookie(在某个时候),然后根据该cookie(用户信息,授权或仅纯会话会话跟踪)来响应渲染内容。

但是,您说的是诸如“问题是在读取cookie之前,react会渲染路由器”。 React无法读取httponly cookie。 React仍然是javascript框架的一部分。在cookie上设置httponly较为安全,但会限制其对浏览器和服务器的访问。