2013-05-20 4 views
0

Я программирую сайт в Symfony2, используя FOSUserBundle для управления доступом пользователей. У меня есть объект под названием «Сайт», который может иметь много пользователей. Только связанные пользователи и администраторы должны иметь доступ к сайту: показать действие.Лучшая практика для доступа только к владельцам и администраторам?

Я не знаю, можно ли это сделать в security.yml, или если мне нужно сделать это прямо в контроллере или где-то еще. Каков рекомендуемый способ?

Спасибо.

+0

Возможно стоит прочитать для реализации: http://symfony.com/doc/current/cookbook/security/acl.html – cheesemacfly

ответ

4

Если вы хотите ограничить доступ для каждого пользователя на уровне объекта, то вы ищете ACLs. ProblematicAclManagerBundle - прекрасная оболочка, упрощающая использование ACL в контроллерах.

В противном случае, если вы хотите ограничить доступ к каждой роли, то вы можете использовать маршруты и роли, определенные в security.yml

Вот пример того, что он должен выглядеть следующим образом:

access_control: 
    - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin, role: ROLE_ADMIN } 
    - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] } 

в вашем контроллер, вы также можете использовать:

use JMS\SecurityExtraBundle\Annotation\Secure; 

/** 
* @Route("/home", name="home") 
* @Secure(roles="ROLE_USER") 
*/ 
public function indexAction() 
{ 
    ... 
} 
+0

Спасибо, это как раз то, что я был ищет (ACL). – picheto

Смежные вопросы