如何延长快速会话超时时间

Anu*_*ond 7 cookies express 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
  })
}))
Run Code Online (Sandbox Code Playgroud)

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

dcr*_*n22 18

express-session有一个rolling可以设置的属性。默认情况下,它设置为false. 如果将该rolling属性设置为true,它将重置expirationmaxAge

我从这里的文档中获得了信息

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
  })
}))
Run Code Online (Sandbox Code Playgroud)


Laj*_*pad 6

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

var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
req.session.cookie.maxAge = 100 * hour
Run Code Online (Sandbox Code Playgroud)

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

var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
Run Code Online (Sandbox Code Playgroud)

  • 不客气。确保这是在一个中心位置完成的,以简化工作流程是有意义的。 (2认同)