Symfony2 представляет аутентифицированных пользователей, использующих интерфейс UserInterface
.
Этот интерфейс просит вас реализовать метод getRoles
, который возвращает все роли, которые имеет пользователь.
В зависимости от того, какВы реализуете этот UserInterface, вы можете получить эти роли из базы данных, веб-службы или чего угодно.
Одним простым способом предоставления этих пользователей является поставщик in-memory
:
# app/config/security.yml
security:
# ...
providers:
in_memory:
users:
ryan: { password: bb87a29949f3a1ee0559f8a57357487151281386, roles: 'ROLE_USER' }
admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN', 'ROLE_RH'] }
Другой способ - использовать EntityProvider .Для получения более подробной информации смотрите эту запись поваренной книги .
. В этом последнем примере роли пользователей статически хранятся в массиве с жестким кодом, но они могут быть получены из другой таблицы с использованием ассоциаций таблиц.Вот как это делается в FOSUserBundle .
Вы даже можете определить иерархию ролей:
# app/config/security.yml
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Так что любой пользователь, имеющий роль ROLE_ADMIN, также унаследовал рольROLE_USER.
Для получения дополнительной информации посмотрите документы .