如何在Sails js中创建基于路由的安全策略?

时间:2015-07-05 11:34:12

标签: authentication sails.js

我为3个用户组提供了一个Sails js应用程序,网站管理员,私人用户&公共用户。

现在url模式如下所示,Admin,

'get /admin/foo': 'fooController.viewAll',
'post /admin/foo': 'fooController.add',
'put /admin/foo/:fooID': 'fooController.edit',

经过身份验证的用户的网址格式

'get /businesses/foo': 'fooController.viewAll',
'post /businesses/foo': 'fooController.add',
'put /businesses/foo/:fooID': 'fooController.edit',

公共用户的网址格式,

'get /public/foo': 'fooController.viewAll',

我希望有一个策略来根据网址模式对用户进行身份验证,如果网址是/ admin,那么检查用户是否为admin?否则如果/ business它将检查用户是否是我们现有的用户。

1 个答案:

答案 0 :(得分:2)

请求对象中有一个名为originalUrl的字段。您可以在策略中访问它,并根据网址决定。政策将类似于以下内容。[我假设您知道如何定义策略并将其添加到配置中。]

module.exports = function(req, res, next) {
        var originalUrl = req.originalUrl;
        var tokenizedOriginalUrl = originalUrl.split('/');
        if(tokenizedOriginalUrl[0] == 'admin'){
            // do something
            next(null);
        }
        else if(tokenizedOriginalUrl[0] == 'business'){
            // do something
            next(null);
        }
        else if(tokenizedOriginalUrl[0] == 'public'){
            // do something
            next(null);
        }
        else{
            next("Access prohibited.");
        }
};