Sails.js rolling sessions

不羁的心 提交于 2019-12-01 00:19:44

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:

  • If you only need the refresh to happen when a controller action is run, you can put your code in a global policy. This won't apply to routes that are mapped directly to views, or to static assets.

config/policies:

'*': 'refreshSessionCookie'

api/policies/refreshSessionCookie:

module.exports = function(req, res, next) {
    req.session._garbage = Date();
    req.session.touch();
    return next();
}
  • If you want the refresh to happen any time a user with a session makes a request for anything, be it a controller, view or static asset, you can put the code in custom middleware that will run for every request.

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'
    ]
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!