如何延长快速会话超时

问题描述 投票:0回答:3

我将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
  })
}))

这似乎是一个常见的任务,但我在任何地方都找不到它。预先感谢。

express cookies express-session
3个回答
27
投票

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

我从文档中获取信息这里

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
  })
}))

5
投票

我认为你可以通过每次用户发送请求时增加

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)

0
投票

就我而言,仅更新以下属性有效! req.session._expires

我仍然不完全确定为什么......

我正在使用“express-session”:“^1.17.3”,

我的代码使用:

req.session._expires = new Date(Date.now() + (process.env.MAX_SESSION_TIME >> 0))
© www.soinside.com 2019 - 2024. All rights reserved.