Symfony2: как перенаправить на определенную страницу, когда пользователю не разрешен доступ к шаблону URL - PullRequest
6 голосов
/ 27 марта 2012

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

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

Я посмотрел параметры firewall.access_denied_url, но не хочу связывать AccessDenied со страницей оплаты, потому что, например, доступ к странице администратора запрещен любому пользователю, у которого нет ROLE_ADMIN, и он перенаправлен на страницу оплаты не имеет никакого смысла.

У меня уже есть избиратель, который проверяет, является ли пользователь действительным или нет, и предоставляет доступ в этом случае, но как мне удается использовать этого избирателя, когда пользователь пытается достичь определенного шаблона и перенаправить его / ее, когда доступ запрещен?

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 25 июня 2013

В app / config / security.yml добавить под защитой:

access_denied_url: / foo / error403

Затем Symfony перенаправит все страницы, к которым пользователь не может получить доступ к странице / foo / error403.

1 голос
/ 04 апреля 2012

Вы можете использовать JMSAopBundle .

Из документации:

Этот пакет добавляет возможности AOP в Symfony2.

Если вы еще не слышали об АОП, это, в основном, позволяет разделить сквозную задачу (например, проверки безопасности) на выделенный класс, и вам не нужно повторять этот код во всех местах, где это необходимо .

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

...