twig symfony-2.1

twig - Symfony2 es_granted(''IS_AUTHENTICATED_FULLY'') durante la visualización de la página de error 404, lo que causa la excepción ResourceNotFoundException



symfony-2.1 (3)

No puedes usar is_granted en una página 404 desde la 2.1:

Se menciona en el archivo de actualización

La escucha del Firewall ahora está registrada después de la escucha del Enrutador. Esto significa que las URL específicas del Firewall (como / login_check y / logout) ahora deben tener rutas adecuadas definidas en su configuración de enrutamiento. Además, si tiene una página de error 404 personalizada, asegúrese de no utilizar ninguna característica relacionada con la seguridad, como la que se is_granted en ella.

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

He configurado páginas de error personalizadas para mostrar ciertos errores HTTP en la carpeta:

app/Resources/TwigBundle/views/Exception/

La página 403 ( error403.html.twig ) funciona y se muestra como se esperaba.

La página 500 ( error500.html.twig ) funciona y se muestra como se esperaba.

La página 404 ( error404.html.twig ) arroja un error de 500 servidores:

Error grave de PHP: excepción no detectada ''Symfony / Component / Routing / Exception / ResourceNotFoundException''

El error se produce al realizar una verificación de autenticación para mostrar ciertos elementos del menú para los usuarios que están o no están autenticados:

{% if is_granted(''IS_AUTHENTICATED_FULLY'') %}

Si elimino esa comprobación y solo permito que se muestren todos los elementos del menú, la página carga la página de error como se esperaba. De nuevo, la página 403 se muestra como debería y utiliza las comprobaciones de autenticación sin ningún problema.

Estoy atascado en este. Las páginas son EXACTAMENTE las mismas, aparte del nombre de archivo.



Yo sugeriría que verificar si app.security.token es más estricto y se evalúe como true incluso cuando el usuario es anónimo.

Si busca app.user , se evaluará como false en las plantillas de Excepción, pero incluso cuando el firewall está presente (= plantillas normales) pero el usuario no está registrado. Esto evitará, por ejemplo, la visualización de un botón de inicio de sesión.

Consulte: https://github.com/symfony/symfony-docs/pull/2359