NodeJS会话变量不会坚持

时间:2012-04-07 05:44:15

标签: node.js timezone connect utc

我遇到了nodejs和connect的问题,以及它没有在请求之间保留会话变量这一事实。现在我不想使用数据库来存储我的会话。我只是想使用MemoryStore。

我的服务器:

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的经验,我之前从未遇到过这个问题,因为它似乎并不在乎。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

确定。所以终于想出了如何做到这一点。在阅读了很多关于我没有在UTC中运行服务器的愚蠢后,我决定尝试一下。我在使用ubuntu,这是让cookie正常工作的解决方案。

执行命令

sudo dpkg-reconfigure tzdata

从“地理区域”列表中选择“Etc” 选择UTC并按Enter键

<强>更新 我注意到我的服务器时间相当大(虚拟机),所以我还必须使用一个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并包含本地时间服务器。

再次更新 跑了一天后,我注意到时间还没有结束。我现在关闭了VM机器的UTC选项。遗憾的是,这也需要重新启动。