我正在使用 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