2014-10-13 6 views
1

У меня разные действия пользователя в контроллере. Я хочу их защитить, поэтому анонимные пользователи не могут получить доступ к этим действиям. (Они не полагаются на специальный префикс-путь)Symfony2 защищает весь контроллер

По: http://symfony.com/doc/current/book/security.html#securing-a-controller

Я должен обеспечить все действия ОТДЕЛЬНО. Это не очень удобно и создает дубликат кода.

Есть ли возможность выбросить доступное исключение для ВСЕХ действий контроллера?

ответ

0

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

Вы должны действительно подумать об использовании контроля доступа в своем security.yml. Почему бы вам не добавить конкретный шаблон для каждого действия? Если нет специального префикса, вы все равно можете ограничить полный URL.

+0

Возможно. Посмотрите на ответ @ AlanChavez. – Tek

+0

Nope. Ответ Алана также зависит от acces_control. Присмотритесь. Я сказал, что это невозможно без блокировки шаблона. И это все еще сохраняется. – Fred

+0

Вы правы. Жаль, что это не позволит мне изменить нисходящее. Ответ @ катушки выглядит многообещающим. – Tek

1

Вы должны закрепить его в security.yml

справа, где секция access_control является:

Это как один из моих проектов выглядеть.

access_control: 
     - { path: ^/oauth, role: ROLE_USER } 

Теперь в контроллере, в этом случае для первой строки, я просто добавьте следующую аннотацию в верхней части класса:

/** 
* Class OAuthController 
* @package MyNamespace\MyBundle\Controller 
* @Route("/oauth") 
*/ 
class OAuthController extends Controller { 
} 

И весь контроллер закреплен.

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