Symfony2: хранение пользователей, ролей, иерархии ролей и контроля доступа в базе данных - PullRequest
9 голосов
/ 18 ноября 2011

Я впервые работал с Symfony (2.x), и у меня возникли вопросы относительно определения ролей, иерархии ролей и того, как их можно назначать отдельным пользователям.

Iбыл заинтересован в хранении ролей и иерархии ролей в базе данных (а не в security.yml);однако я не могу найти никакой документации, подтверждающей это.Это целесообразно?

Мне было интересно иметь модуль администратора, который может добавлять новые роли и определять иерархии ролей;тем не менее, изменение администратором модуля security.yml или какого-либо другого файла конфигурации кажется плохой идеей.

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

  • У кого-нибудь есть какие-либо советы или документация, которые могут помочь с этим?
  • Это плохая идея, с точки зрения производительности?

В прошлом я успешно реализовывал это с Zend Framework и надеялся сделать то же самое с Symfony2.

Ответы [ 3 ]

4 голосов
/ 26 августа 2012

Решение:

Следующая запись поваренной книги о хранении / получении пользователей и ролей в / из базы данных «Как загрузить пользователей Security из базы данных (Entity Provider)» http://symfony.com/doc/current/cookbook/security/entity_provider.html

Короче говоря, классы сущностей role и user должны реализовать RoleInterface и UserInterface / AdvancedUserInterface , и вам необходимо внесите некоторые изменения в ваш security.yml

4 голосов
/ 18 ноября 2011

Возможно, вы захотите взглянуть на FOSUserBundle

1 голос
/ 16 декабря 2011

Вам нужно будет поместить роли в БД и отобразить их, используя отношение «многие ко многим». Затем постройте администратора для ролей. Я написал, как изменить пользователя для использования ролей m2m на http://blog.jmoz.co.uk/symfony2-fosuserbundle-role-entities.. Я не дошел до иерархии ролей, так что она все еще сохраняется в конфигурации.

...