如何扩展快速会话超时

时间:2017-10-08 11:04:31

标签: express cookies express-session

我正在使用express js 4和express-session 并将maxAge设置为一小时。但是,如果用户继续访问该网站,则应延长超时,否则即使他/她仍在使用它,用户也将被注销。

app.use(session({
  secret: 'xxx',
  name: 'sessionId',
  resave: true,
  saveUninitialized: true,
  cookie: {
    httpOnly: true,
    maxAge: 1*60*60*1000
  })
}))

这似乎是一项常见的任务,但我无法在任何地方找到它。提前谢谢。

2 个答案:

答案 0 :(得分:3)

我认为您可以通过每次用户发送请求时增加maxAge来解决您的问题。当用户发送请求时,计算会话超时前剩余的时间,从一小时减去这段时间,并将结果添加到maxAge。或者,您可以使用expires属性以及非常大的maxAge:

var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
req.session.cookie.maxAge = 100 * hour

并且每当发送请求时,再次计算expires

var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)

答案 1 :(得分:1)

express-session具有可以设置的rolling属性。默认情况下,它设置为false。如果将rolling属性设置为true,它将把expiration重置为maxAge

我从here文档中获得了信息

app.use(session({
  secret: 'xxx',
  name: 'sessionId',
  resave: true,
  saveUninitialized: true,
  rolling: true, // <-- Set `rolling` to `true`
  cookie: {
    httpOnly: true,
    maxAge: 1*60*60*1000
  })
}))