Подтвердить что ты не робот

В чем разница между ACL и пользовательскими ролями в Symfony2

Я новичок в symfony2, и я не согласен с условиями и тем, что используется для них. может кто-нибудь объяснить, в чем разница между

  • ACL
  • Роли
  • Группы
4b9b3361

Ответ 1

Давайте рассмотрим самый простой пример: приложение Blog (снова).

При создании приложения для блога вам часто требуется аутентифицировать пользователей и разрешать им выполнять определенные действия, например:

  • авторизуйте Боба, чтобы добавить нового участника в блог
  • разрешить Алисе создать новое сообщение в блоге
  • разрешить Алисе редактировать собственное сообщение в блоге
  • разрешить Бобу удалять сообщение в блоге Алисы

Что такое роль

Роль представляет набор разрешений, жестко закодированных в вашем приложении. Когда вы проверяете, разрешено ли пользователю добавлять нового участника в блог, ваш код проверяет, имеет ли текущий пользователь роль "ROLE_ADMIN".

Вот почему Бобу (он имеет ROLE_ADMIN) разрешено добавлять Алису в качестве нового Contributor. См. Документация Symfony о безопасности/Ролях.

Что такое группа

Когда пользователь принадлежит к группе, она обычно имеет право на набор ролей. Алиса принадлежит группе "Авторы", поэтому у нее есть роли ROLE_STATS (она разрешала видеть статистику блога) и ROLE_POST (она разрешала публиковать новую запись в блоге).

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

Списки ACL

Списки управления доступом полезны, когда вам необходимо принять решение о авторизации на основе в роли + объект домена.

Алисе разрешено редактировать записи в блогах, написанные ею только. Чтобы проверить это разрешение, вам нужны Alice Roles и модель Post, которую она пытается редактировать. Документация по Symfony по спискам ACL также довольно понятна.

О, и Бобу разрешено редактировать все записи в блоге, потому что у него есть ROLE_ADMIN. Решение здесь основано только на роли.