No_*_*ame 3 javascript session node.js express sails.js
如果没有用户活动(不包括websockets实时更新数据),则滚动会话是在设定的时间内到期的会话.如果用户在到期前访问该站点的另一部分,则应延长到期时间.我如何使用Sails.js做到这一点?设置maxAge和in expires下没有达到预期的效果.到期时不会因另一个页面加载而延长.它保持不变.cookie/config/session.js
编辑:一旦Sails.js升级其Express版本,这将得到解决吗?我看到https://github.com/expressjs/session有一个rolling选项.
EDIT2:我看到了这个答案:尽管有活动,ExpressJS会话即将到期我是否需要复制和粘贴
req.session._garbage = Date();
req.session.touch();
Run Code Online (Sandbox Code Playgroud)
在控制器的每条路线上?有没有更好的办法?
在Sails中更改Express依赖项并不是我们需要的.但与此同时,您可以通过多种方式处理此问题,具体取决于您要触发cookie刷新的条件:
配置/策略:
'*': 'refreshSessionCookie'
Run Code Online (Sandbox Code Playgroud)
API /政策/ refreshSessionCookie:
module.exports = function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
return next();
}
Run Code Online (Sandbox Code Playgroud)
配置/ http.js:
middleware: {
refreshSessionCookie: function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
return next();
},
order: [
'startRequestTimer',
'cookieParser',
'session',
'refreshSessionCookie', // <-- your custom middleware
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
]
}
Run Code Online (Sandbox Code Playgroud)