【发布时间】: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