Подтвердить что ты не робот

Symfony2 is_granted ('IS_AUTHENTICATED_FULLY') во время 404 отображения страницы ошибки, вызывая ResourceNotFoundException

У меня есть настраиваемые страницы ошибок для отображения определенных HTTP-ошибок в папке:

app/Resources/TwigBundle/views/Exception/

Страница 403 (error403.html.twig) работает и отображается как ожидалось.

Страница 500 (error500.html.twig) работает и отображается как ожидалось.

Страница 404 (error404.html.twig) выдает ошибку сервера 500:

PHP Неустранимая ошибка: исключение "Symfony\Component\Routing\Exception\ResourceNotFoundException"

Ошибка вызывается при выполнении проверки подлинности для отображения определенных пунктов меню для пользователей, которые не аутентифицированы:

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

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

Я застрял на этом. Страницы ТОЧНО одинаковы, кроме имени файла.

4b9b3361

Ответ 1

Вы не можете использовать is_granted на странице 404, поскольку 2.1:

Он упоминается в файле обновления

Слушатель брандмауэра теперь зарегистрирован после прослушивателя маршрутизатора. Это означает, что определенные URL-адреса брандмауэра (например,/login_check и /logout ) теперь должны иметь соответствующие маршруты, определенные в конфигурации маршрутизации. Кроме того, если у вас есть страница ошибки 404, убедитесь, что вы не используете никаких связанных с ней функций, таких как is_granted.

См: https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md#security

Ответ 3

Я бы предложил проверить app.security.token на более строгую и оценить true, даже если пользователь анонимен.

Если вы проверите app.user, он будет оценивать false в шаблонах исключений, но даже если присутствует брандмауэр (= обычные шаблоны), но пользователь не регистрируется. Это предотвратит, например, отображение кнопки входа.

Смотрите: https://github.com/symfony/symfony-docs/pull/2359