В чем разница между ACL и ролями пользователей в Symfony2 - PullRequest
18 голосов
/ 13 января 2012

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

  1. ACL
  2. Роли
  3. Группы

1 Ответ

38 голосов
/ 31 марта 2012

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

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

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

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

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

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

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

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

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

ACL

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...