NodeJS会话变量不会粘住

问题描述:

我有一个Nodejs和连接问题,并且它没有在请求之间保留会话变量。现在我不想使用数据库来存储我的会话。我只想使用MemoryStore。NodeJS会话变量不会粘住

我的服务器:

var server = connect() 
.use(connect.cookieParser('justmeknowsthis')) 
.use(connect.session({ cookie: { maxAge: config.data.sessionTimeout /* 1800000 */ }})) 
.use(auth.authorize) 
.use(routes.routes) 
.use(function(req, res, next) { 
    utils.data.returnJsonError(res, 404, true, { 
     message: 'Call not supported' 
    }); 
}); 

我设置这样一个会话变量:

req.session.auth = true; 
req.session.username = data.username; 

发现有关该问题的一些信息后,我已经注意到,它可能与做时区,因为它开始工作,如果我只是增加超时。从我过去使用ASP.Net的经验来看,我从来没有遇到过这个问题,因为它似乎并不关心这个问题。

我该如何解决这个问题?

好的。所以终于想出了如何去做。在阅读了很多关于我在UTC没有运行我的服务器的愚蠢信息之后,我决定尝试一下。我在Ubuntu上,这里是让cookies正常工作的解决方案。

运行:

sudo dpkg-reconfigure tzdata 

从“地理区域” 选择UTC,然后按下列表中选择“等”输入

UPDATE 我发现我的服务器时间漂移相当严重(虚拟机器),所以我还必须使用ntp-daemon来让它保持适当的时间。设置如下:

sudo apt-get install ntp 

您需要停止ntp-daemon以便能够在第一次手动更新它。您也可以重新启动服务器,但它是Linux,因此您不必这样做。运行下面的停止守护进程:手动

sudo /etc/init.d/ntp stop 

更新服务器时间(用接近你http://www.pool.ntp.org/en/服务器):

ntpdate ntp.ubuntu.com pool.ntp.org 

只是再次重新启动守护程序:

sudo /etc/init.d/ntp start 

还更新文件/etc/ntp.conf并包含您的本地时间服务器。

UPDATE AGAIN 跑完一天后,我发现时间还没有关闭。我现在已经关闭了VM机器的UTC选项。这不幸的是还需要重新启动。

+0

很高兴你把它分类。很高兴知道需要UTC才能使Cookie生效。 – 2012-04-13 14:05:03