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

2024-02-25

我使用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'
  })
}));

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Express.js 和 connect-mongo 会话持续时间 的相关文章

随机推荐