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-非常无益
有人遇到这个问题还是可以提出其他建议?
答案 0 :(得分:0)
req.session.cookie.maxAge
告诉您会话中还剩下多少时间。在请求结束时将其重置为原始值。 README.md中对此进行了记录。
您的前端无法向后端询问还剩下多少会话,因为该会话在请求中被触摸。您可以在会话参数上设置cookie.maxAge
,而无需推迟登录。您的前端应保留自己的计时器,并在每次后端请求时将其重置。