Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express.js和connect mongo会话持续时间_Node.js_Mongodb_Session_Cookies_Express - Fatal编程技术网

Node.js Express.js和connect mongo会话持续时间

Node.js Express.js和connect mongo会话持续时间,node.js,mongodb,session,cookies,express,Node.js,Mongodb,Session,Cookies,Express,我使用带有connect mongo的express.session来存储用户会话。 从现在起,我将cookie maxAge设置为2周,但我想要的是,如果用户在这2周内处于活动状态,会话将延长到另外2周,这样当用户在2周内处于非活动状态时,他的会话将被删除(cookie和mongo中的会话)。 但问题是,当他访问一个页面时,会话在MongoDB中得到更新,但是cookie将在2周后过期,并且不会更改它的“过期”。 这是我的代码: app.use(express.session({ secr

我使用带有connect mongo的express.session来存储用户会话。 从现在起,我将cookie maxAge设置为2周,但我想要的是,如果用户在这2周内处于活动状态,会话将延长到另外2周,这样当用户在2周内处于非活动状态时,他的会话将被删除(cookie和mongo中的会话)。 但问题是,当他访问一个页面时,会话在MongoDB中得到更新,但是cookie将在2周后过期,并且不会更改它的“过期”。 这是我的代码:

app.use(express.session({
  secret: 'superSecretKey',
  cookie: {maxAge: 3600000*24*14},
  store: new MongoStore({
    mongoose_connection: mongoose.connections[0],
    db: 'myDb'
  })
}));
我怎样才能实现我想要的?
谢谢

我终于解决了这个问题,您必须使用中间件来更新会话中的任何数据,以便cookie能够重新发送,就像这样:

app.use(function(req, res, next) {
  req.session._garbage = Date();
  req.session.touch();
  next();
});

这样,maxAge将在每次请求应用程序时都在cookie和会话上进行更新。

请参阅如何实现此目的。除此之外,
maxAge
应该设置为会话将在未来到期的毫秒数,而不是日期(这就是
expires
的目的)。因此,请使用以下命令:
maxAge:3600000*24*14
将有效期设置为两周。谢谢!我还发现了这个。是的,我总是混淆expires和maxAge,我编辑了问题并发布了答案我想做一件类似的事情,但大约2小时。我是否简单地将
maxAge
设置为您原来的问题,然后将这个
app.use
放在config?req.session.regenate(回调)不适用于您?