Nodejs req.sessionID在重定向后偶尔会发生变化

时间:2012-10-05 08:32:02

标签: node.js express session-cookies sessionid

我正在使用nodejs,express和connect-memcaced来处理我的会话。我创建了一个每次都完美执行的登录脚本,设置会话数据并将用户标记为已登录,然后将其重定向回他登录的页面。偶尔(并非总是)发生的事情是,在重定向并且页面加载cookie之后会话ID更改并且用户当然不再登录。我没有找到导致这种情况发生的原因以及为什么每次都不会发生这种情况。

登录功能的代码snipet:

DB.getOne('User',{filters:{'primary':{email:req.body.email}}}, function(err,data){
  if(data[0] && data[0].active == 1){
    var encodedPass = self.encodePass(req.body.pass,req.body.email);
    if(encodedPass == data[0].pass){
      req.session.pr.user = data[0];
      req.session.pr.user.status = true; 
      res.writeHead(302, {
        'Location': goTo 
      });
      res.end();
    }
  }
});

直接查看memcached我可以看到这完全执行,数据总是保存在原始sessionID下的memcached中。由于某种原因,重定向必须更改sessionID

1 个答案:

答案 0 :(得分:0)

当我没有注意到我重新启动了开发服务器时,我经常发现这种情况发生在我身上。请记住,会话cookie存储在内存中,因此当服务器重新启动时,将忘记所有会话,并自动为用户分配新会话。