滚动会话是在没有用户活动(不包括websockets实时更新数据)的情况下在设定的时间内到期的会话。如果用户在到期前访问网站的其他部分,则应延长到期日期。我如何使用Sails.js做到这一点?在maxAge
的{{1}}下设置expires
和cookie
不会产生预期的效果。到期时不会因另一个页面加载而延长。它保持不变。
编辑:一旦Sails.js升级其Express版本,这会得到解决吗?我看到https://github.com/expressjs/session有一个/config/session.js
选项。
EDIT2:我看到了这个答案:ExpressJS session expiring despite activity我是否需要复制和粘贴
rolling
到控制器中的每条路线上?还有更好的方法吗?
答案 0 :(得分:7)
在Sails中更改Express依赖项并不是我们需要的。但与此同时,您可以通过多种方式处理此问题,具体取决于您要触发cookie刷新的条件:
<强>配置/策略:强>
'*': 'refreshSessionCookie'
<强> API /策略/ refreshSessionCookie:强>
module.exports = function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
return next();
}
<强>配置/ 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'
]
}