重定向已在 Sails 中登录的用户

Redirect already logged in users in Sails

我有一个 Sails.js 应用程序,在通过 /login 页面登录后将用户重定向到 /dashbaord

我想要的是自动重定向到 /dashboard 已经登录的用户并尝试访问任何页面,无论是主页还是任何其他页面。

如何在 Sails 中实现这一点?

在没有更多信息的情况下,我能想到的最简单的方法是创建一个策略,然后将该策略应用于所有相关的控制器和操作。一个可能的例子:

// api/policies/forceDashboard.js
module.exports = function(req, res, next) {
  if (req.session.authenticated) {
    return res.redirect('/dashboard');
  }

  return next();
};

// config/policies.js

module.exports.policies = {
  '*': 'forceDashboard',

  'DashboardController': {
    'find': 'sessionAuth',
    '*': 'forceDashboard'
  }
};

感谢 Ron Smith 和 Bonanza,我实现了我想要的。

由于某种原因,从路由调用策略时 req.session.authenticatedundefined,所以这是我的 api/policies/forceDashboard.js

module.exports = function(req, res, next) {
    if (req.user) {
        return res.redirect('/dashboard');
    }

    return next();
};

然后,按照 Bonanza 的建议,我将策略添加到 config/routes.js 中的路由:

'/': [
    { policy: 'forceDashboard' },
    { view: 'homepage' }
],

'get /login': [
    { policy: 'forceDashboard' },
    { view: 'login' }
]