NodeJS 会话变量不会粘住

问题描述 投票:0回答:1

我对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 的经验,我以前从未遇到过这个问题,因为它似乎并不关心这一点。

如何解决这个问题?

node.js timezone utc node.js-connect
1个回答
1
投票

好的。于是终于知道怎么做了。在读了很多关于我没有在 UTC 运行我的服务器是多么愚蠢的事情之后,我决定尝试一下。我在 ubuntu 上,这是让 cookie 正常工作的解决方案。

运行:

sudo dpkg-reconfigure tzdata

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

更新 我注意到我的服务器时间漂移相当严重(虚拟机),因此我还必须使用 ntp 守护程序来使其正确保持时间。设置如下:

sudo apt-get install ntp

您需要停止 ntp 守护进程才能第一次手动更新。您还可以重新启动服务器,但它是 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 并包含您的本地时间服务器。

再次更新 跑了一天后,我发现时间还没有到。我现在已关闭虚拟机的 UTC 选项。不幸的是,这也需要重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.