4

我正在使用 nodejs、express 和 connect-memcaced 来处理我的会话。我制作了一个每次都能完美执行的登录脚本,设置会话数据并将用户标记为已登录,然后将他重定向回他登录的页面。有时(并非总是)发生的情况是,在他被重定向并且页面加载cookies sessionID 更改之后,用户当然不再登录。我未能找到发生这种情况的原因以及为什么它不会每次都发生。

登录功能的代码片段:

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

4

1 回答 1

0

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

于 2013-03-07T21:11:50.060 回答