jck*_*111 26 session session-cookies node.js express
我正在设置会话maxAge = 900000,我看到会话cookie上的expires属性设置正确.但是,在后续请求中,不会延长超时.它永远不会扩展,cookie最终会过期.
该会议中间件文档说,活动#触摸()是没有必要的,因为会议将中间件为我做到这一点.我实际上尝试req.session.touch()手动调用,但没有做任何事情,我也试过设置maxAge req.session.cookie也没有做任何事情:-(
我错过了某个设置以自动扩展活动会话吗?如果没有在每个请求上手动重新创建cookie,还有其他方法可以在最终用户活动后延长会话超时吗?
编辑:我在快递v3中遇到了这个问题.我不是百分百肯定,但我认为来自快速更新日志的这个说明可能是罪魁祸首:
gdw*_*dw2 28
滚动会话现在存在于快速会话中.在选项中将rolling属性设置为true,它将通过设置应用于当前时间的maxAge偏移量来重新计算到期值.
https://github.com/expressjs/session/issues/3
https://github.com/expressjs/session/issues/33
https://github.com/expressjs/session(搜索滚动)
例如,请注意rolling:
app.use(session({
secret: 'a secret',
cookie: {
path: '/',
httpOnly: true,
secure: false,
maxAge: 10 * 60 * 1000
},
rolling: true
}));
Run Code Online (Sandbox Code Playgroud)
jck*_*111 18
如果其他人有同样的问题,这是解决方案:
function (req, res, next) {
if ('HEAD' == req.method || 'OPTIONS' == req.method) return next();
// break session hash / force express to spit out a new cookie once per second at most
req.session._garbage = Date();
req.session.touch();
next();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11667 次 |
| 最近记录: |