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选项。这不幸的是还需要重新启动。
很高兴你把它分类。很高兴知道需要UTC才能使Cookie生效。 – 2012-04-13 14:05:03