【问题标题】:How to extend express session timeout如何延长快速会话超时
【发布时间】:2018-03-19 17:08:05
【问题描述】:

我正在使用 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


    【解决方案1】:

    我认为您可以通过在每次用户发送请求时增加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)
    

    【讨论】:

    • 谢谢。我应该把它做成一个中间件并在所有路由器中调用它吗?
    • 不客气。确保在中心位置完成这项工作是有意义的,以简化工作流程。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2020-05-25
      • 2014-07-16
      相关资源
      最近更新 更多