2014-11-11 6 views
1

Список контроля доступа или ACL определяет набор правил, определяющих, какая группа пользователей имеет доступ к тем маршрутам в вашем Slim-приложении.SLIM Framework - Как сделать список контроля доступа с помощью SLIM?

Любая идея использования списка контроля доступа с помощью SLIM?

Я пытаюсь создать Список контроля доступа для моей авторизации API REST.

Пример:

  • член Роль только может получить доступ к GET, UPDATE из ресурса (/ члена)

  • член Администратор только может получить доступ к GET, UPDATE, POST Удалить из ресурса (/ администратора)

Любая идея, как это сделать с помощью SLIM?

+0

Вы видели [slim-auth] (https://github.com/jeremykendall/slim-auth)? –

+0

Спасибо за ссылку :) –

+0

Сообщите мне, если это вам полезно. :) –

ответ

1

Я ищу лучший способ реализовать ACL ресурсов, используя SLIM. Я думаю, что контроль доступа к маршруту не очень хорош. Ресурсы API REST идентифицируются динамическим URL-адресом, например «/ member /: id».

Я считаю, что управление разрешениями на маршруте не обеспечивает проверку безопасности на одном ресурсе; если у пользователя есть полный доступ к [/ member/1], всегда можно выполнить DELETE на [/ member/2], потому что основной маршрут всегда «/ member».

Для идентификации одного ресурса необходимо знать динамический идентификатор и после того, как вы сможете проверить, есть ли у пользователя разрешения на этот конкретный ресурс.

Применить GET, POST, DELETE проверить общий маршрут [/ member] Я думаю, что это не обеспечивает правильное управление.

+1

Вы используете одно из ограничений базового ACL, которое заключается в том, что вам нужно определить нелепое количество «ресурсов» (например, delete/1, delete/2 ... каждый становится отдельным ресурсом). Вы хотите [управление доступом на основе атрибутов] (https://en.wikipedia.org/wiki/Attribute-based_access_control). Просмотрите мой проект, [UserFrosting] (http://www.userfrosting.com) (на основе Slim) или Larvel's [gates] (http://laravel.com/docs/5.1/authorization) для двух реализаций ABAC. – alexw

+0

Не копаясь в деталях проекта, он выглядит как «callables» в [этой реализации промежуточного программного обеспечения ACL для Slim] (https://github.com/slimphp-api/slim-acl) позволяет использовать один ресурс детализацию, которую вы ищете. – alttag

1

Все еще учится, но ... На моих тонких маршрутах вы можете вызвать метод на контроллере. В этом контроллере назовите разрешение для этого конкретного метода. Тогда просто использовать in_array(), чтобы найти это значение в массиве доступа пользователя, вы можете сохранить в $_SESSION, когда пользователь входит в систему

$this->get('/admin/users', 'AdminController:getUsers')->setName('admin.users'); 

AuthController метод класса> getUsers.>

$permission = "view_users"; 

if(in_array($permission, $_SESSION['user']['access']) === false) { 
    // show flash message, redirect- whatever 
} 

Большинство людей используют Zend Acl теперь, хотя я не пошел по этому пути, чтобы учиться.

Смежные вопросы