Node.js NodeJS会话变量不会保持不变

Node.js NodeJS会话变量不会保持不变,node.js,timezone,connect,utc,Node.js,Timezone,Connect,Utc,我对nodejs和connect有一个问题,而且它没有在请求之间保留会话变量。现在我不想用数据库来存储会话。我只是想用一下记忆库 我的服务器: var server = connect() .use(connect.cookieParser('justmeknowsthis')) .use(connect.session({ cookie: { maxAge: config.data.sessionTimeout /* 1800000 */ }})) .use(auth.authorize) .

我对nodejs和connect有一个问题,而且它没有在请求之间保留会话变量。现在我不想用数据库来存储会话。我只是想用一下记忆库

我的服务器:

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正常工作的解决方案

运行:

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

更新 我注意到我的服务器时间在虚拟机上漂移得很厉害,所以我还必须使用一个ntp守护进程来让它正确地保持时间。安装程序如下:

sudo apt-get install ntp
您需要停止ntp守护进程,以便能够在第一次手动更新它。您也可以重新启动服务器,但它是Linux,因此不必重新启动。运行以下命令以停止守护进程:

sudo /etc/init.d/ntp stop
使用靠近您的服务器手动更新服务器时间,从:

只需重新启动守护程序:

sudo /etc/init.d/ntp start
还要更新文件/etc/ntp.conf并包括本地时间服务器

再次更新
跑了一天之后,我注意到时间还没有到。我现在已经关闭了VM机器的UTC选项。不幸的是,这还需要重新启动。

很高兴您已将其整理好。很高兴知道UTC是使cookie生命周期正常工作所必需的。
ntpdate ntp.ubuntu.com pool.ntp.org
sudo /etc/init.d/ntp start