Давайте рассмотрим самый простой пример: приложение блога (снова).
При создании приложения блога вам часто требуется аутентифицировать пользователей и разрешать им выполнять определенные действия, например:
- разрешить Бобу добавлять нового автора в блог
- разрешить Алисе создать новую запись в блоге
- разрешить Алисе редактировать собственную запись в блоге
- авторизовать Бобачтобы удалить сообщение в блоге Алисы
Что такое роль
Роль представляет набор разрешений, жестко заданных в вашем приложении .При проверке, разрешено ли пользователю добавлять нового участника в блог, ваш код проверяет, есть ли у текущего пользователя роль «ROLE_ADMIN».
Вот почему Бобу (у него есть ROLE_ADMIN) разрешено добавлятьАлиса как новый участник.См. Документацию Symfony по безопасности / ролям .
Что такое группа
Когда пользователь входит в группу, он обычно имеет право на набор ролей .Алиса принадлежит к группе «Участники», поэтому у нее есть роли ROLE_STATS (ей разрешено просматривать статистику блога) и ROLE_POST (ей разрешено публиковать новую запись в блоге).
Опять же, эта концепция не сложназакодированы в Symfony, но разработчики обычно так думают.См. немного об управлении ролями в базе данных с группами .
ACL
Списки контроля доступа пригодятся, когда вам нужно принять решение об авторизации на основе наРоль + объект домена .
Алиса может редактировать только записи, написанные ею.Чтобы проверить это разрешение, вам нужны роли Алисы и модель сообщения, которые она пытается отредактировать. Документация Symfony по спискам ACL также довольно ясно говорит об этом.
О, и Бобу разрешено редактировать все записи в блоге, потому что у него есть ROLE_ADMIN.Решение здесь основано только на роли.