如何在发送响应节点js之前设置cookie(Sails)

时间:2015-12-22 12:25:36

标签: javascript node.js asynchronous sails.js

如果在发送响应之前设置cookie,我遇到了问题。 就像我想为登录用户设置cookie然后我想发送响应确定。

User.find({user:req.body.username,password:req.body.password})
  .exec(function(err,row){
  if(err){
    console.log(err);
    res.negotiate();
  }
  else if(row.length){
    res.cookie('user',{user:row[0].user,role:row[0].role},{
      signed:true,
      httpOnly:true,
      maxAge:1000*60*60*24*5
    });
    res.end('You are logged in successfully');
  }
  else{
    console.log('nothing executed');
    res.end('Not such a user');
  }
});

确保在res.cookie()

之前执行res.end()

1 个答案:

答案 0 :(得分:2)

通过向浏览器发送Set-Cookie标头来“设置”Cookie。因此,严格来说,在发送响应之前无法设置cookie 。调用res.cookie()只需准备相应的标题,但实际上并不发送它。

我看到你使用cookie来存储用户数据,所以在这种情况下你可能最好使用会话模块,如https://github.com/expressjs/session - 它可以让你随时读取或写入数据并处理低 - 等级cookie业务。