4

我使用 express.session 和 connect-mongo 来存储用户会话。我从现在开始将 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'
  })
}));

我怎样才能达到我想要的?谢谢!

4

1 回答 1

3

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

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

这样,maxAge 将在对应用程序的每个请求上更新 cookie 和会话。

于 2013-10-09T18:09:15.943 回答