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

问题描述 投票:0回答:1

我正在尝试获取一个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();
        }
    });

};

node.js reactjs server-side
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.