【问题标题】:Express Session / Cookie maxAge property refreshes on requestExpress Session / Cookie maxAge 属性根据请求刷新
【发布时间】:2019-03-16 22:24:33
【问题描述】:

app.js 中的代码

var cookieParser = require("cookie-parser")
var session = require("express-session")


app.use(cookieParser())

app.set('trust proxy', 1)
app.use(session(
  {
    "name": '***',
    "secret": '***',
    "cookie": {
      "maxAge": null,
      "expires": null,
      "httpOnly": true,
      "secure": true
    },
    "rolling": false,
    "saveUninitialized": false,
    "resave": false,

}))

当登录这个端点被命中时

req.session.username = email    // defaults to putting something in cookie
    req.session.cookie.maxAge = 1000 * 5
    req.session.touch()

测试:找出 cookie/会话的剩余时间

router.get('/refresh-session', function(req, res){
    if (req.session){
        console.log(req.session.username)
        console.log(req.session.cookie.maxAge)
    }

})

我的目标是向用户显示一个弹出窗口,通知他们他们的会话即将到期。每次他们导航到新页面时,我都会刷新 maxAge ......但是,在此之前我需要找出实际的当前 maxAge 是什么。这样做似乎会刷新 cookie 的 maxAge。但是这个 maxAge 刷新实际上并没有影响过期时间。

例如: 如果 maxAge 设置为 5 秒(测试目的),则调用该方法检查 maxAge 将始终在 4800-5000 毫秒之间。但是,在 5 秒之后 - 无论我刷新多少次 - cookie 都会在 5 秒后过期(这是预期的)。

问题是为什么要重置 id maxAge?

我环顾四周,发现了一些无用的 git 页面。这里: https://github.com/expressjs/session/issues/189#issuecomment-182631933 - 不起作用 https://github.com/expressjs/session/issues/2 - 非常没有帮助

有人遇到这个问题或可以提出替代方案吗?

【问题讨论】:

    标签: node.js reactjs express session cookies


    【解决方案1】:

    req.session.cookie.maxAge 表示会话还剩多少时间。它在请求结束时重置为原始值。这在README.md 中有记录。

    您的前端无法向后端询问还剩下多少会话,因为会话在请求时触及。您可以在会话参数中设置cookie.maxAge,无需推迟到登录。您的前端应保留自己的计时器,并在每次向后端发出请求时将其重置。

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2013-10-24
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多