A rolling session is a session that expires in a set amount of time should there be no user activity(excluding websockets live updating data). If the user visits another part of the site before expiry, the expiry should then be extended. How would I do this with Sails.js? Setting maxAge
and expires
under cookie
in /config/session.js
does not have the desired effect. The expiry does not get extended with another page load. It stays constant.
EDIT: Will this be resolved once Sails.js upgrades its Express version? I see https://github.com/expressjs/session has a rolling
option.
EDIT2: I see this answer: ExpressJS session expiring despite activity Would I need to copy and paste
req.session._garbage = Date();
req.session.touch();
onto each route in the controller? Is there a better way?
Changing the Express dependency in Sails is not something we take lightly. But in the meantime, you can handle this in a couple of ways, depending on the conditions you'd like to trigger the cookie refresh:
config/policies:
'*': 'refreshSessionCookie'
api/policies/refreshSessionCookie:
module.exports = function(req, res, next) {
req.session._garbage = Date();
req.session.touch();
return next();
}
config/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'
]
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With