Node.Js:无法找到签名的cookie

时间:2016-02-07 22:32:03

标签: node.js express cookies

使用MEAN环境(使用express 4),我创建了一个像这样的cookie。

//webserver.js
app.use(cookieParser(„somesecretkey“));

//somescript.js
res.cookie(‚testcookie‘, ‚testvalue', {signed: true, maxAge: 999999, httpOnly: true}); 

在另一个脚本中,我尝试像这样检查cookie的存在。

//someotherscript.js
if(req.cookies.testcookie){   
        console.log("COOKIE EXISTS“+req.cookies.testcookie); 
}else{
        console.log(„NO COOKIE“+req.cookies.testcookie); //always undefined
}   

我在浏览器中检查了cookie,它确实存在,但是当我按下刷新或只是访问页面时,控制台会记录没有cookie(cookie未定义)。只要我将cookie更改为unsigned并删除密钥,我就可以访问它!?为什么一旦签名就找不到cookie?

1 个答案:

答案 0 :(得分:0)

expressjs documentation for res.cookie告诉我们:

  

使用cookie-parser中间件时,此方法也支持signed   饼干。只需将array([[ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]) 选项设置为signed即可。然后   true将使用传递给res.cookie()的秘密   签署价值。

cookieParser(secret)
     

稍后您可以通过req.signedCookie对象访问此值。

所以:

  • 您是否使用res.cookie('name', 'tobi', { signed: true }); 确定了一个秘密?
  • 您应该检查cookieParser中的Cookie,而不是req.signedCookie