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

时间:2013-10-09 17:04:42

标签: node.js mongodb session cookies express

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

app.use(express.session({
  secret: 'superSecretKey',
  cookie: {maxAge: 3600000*24*14},
  store: new MongoStore({
    mongoose_connection: mongoose.connections[0],
    db: 'myDb'
  })
}));

我怎样才能实现我想要的目标? 谢谢!

1 个答案:

答案 0 :(得分:3)

我终于解决了它,你必须使用中间件更新会话中的任何数据,以便cookie重新发送,就像这样:

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

这样,maxAge会在每次向应用程序发出请求时更新cookie和会话。