Как создать политику безопасности на основе маршрута в Sails js?

У меня есть приложение Sails js для 3 групп пользователей, администратора сайта, частного пользователя и публичного пользователя.

Теперь шаблон URL-адреса для администратора, как показано ниже,

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

Шаблон URL для аутентифицированного пользователя,

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

Шаблон URL для публичного пользователя,

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

Я хочу иметь политику для аутентификации пользователя на основе шаблона URL-адреса, если URL-адрес похож на /admin, он будет проверять, что пользователь является администратором? иначе, если /business, он проверит, является ли пользователь нашим существующим пользователем или нет.


person Aritrik    schedule 05.07.2015    source источник


Ответы (1)


В объекте запроса есть поле с именем originalUrl. Вы можете получить к нему доступ в своей политике и принять решение в зависимости от URL-адреса. Политика будет выглядеть примерно так: [Я предполагаю, что вы знаете, как определить политику и добавить ее в конфигурацию.]

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.");
        }
};
person taufique    schedule 05.07.2015