Express Session / Cookie maxAge属性根据要求刷新

时间:2018-10-11 18:31:29

标签: node.js reactjs express session cookies

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-非常无益

有人遇到这个问题还是可以提出其他建议?

1 个答案:

答案 0 :(得分:0)

req.session.cookie.maxAge告诉您会话中还剩下多少时间。在请求结束时将其重置为原始值。 README.md中对此进行了记录。

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