2012-08-08 9 views
17

Ho installato pagine di errore personalizzate da visualizzare per alcuni errori HTTP nella cartella:Symfony2 is_granted ('IS_AUTHENTICATED_FULLY') durante la visualizzazione della pagina di errore 404, causando ResourceNotFoundException

app/Resources/TwigBundle/views/Exception/ 

Il 403 pagina (error403.html.twig) opere e mostre come previsto.

La pagina 500 (error500.html.twig) funziona e viene visualizzata come previsto.

La pagina 404 (error404.html.twig) genera un errore 500 del server:

PHP Fatal error: Uncaught exception 'Symfony\Component\Routing\Exception\ResourceNotFoundException'

L'errore è stato gettato facendo un controllo di autenticazione per visualizzare alcune voci di menu per gli utenti che sono o non autenticati:

{% if is_granted('IS_AUTHENTICATED_FULLY') %} 

Se rimuovo tale controllo e consento semplicemente di visualizzare tutte le voci di menu, la pagina carica la pagina di errore come previsto. Ancora una volta, la pagina 403 viene visualizzata come dovrebbe e utilizza i controlli di autenticazione senza problemi.

Sono bloccato su questo. Le pagine sono ESATTAMENTE uguali, a parte il nome del file.

+0

Quale versione di Symfony stai usando? – j0k

+0

L'ultimo e il più grande. 2.1-dev credo – Nick

+2

Penso che sarebbe meglio (a causa della versione -dev) creare un problema su github, i tipi symfony sono davvero utili lì :) – dmirkitanov

risposta

10

Non è possibile utilizzare il is_granted in una pagina 404 dal 2.1:

E 'menzionato nel file di aggiornamento

The Firewall listener is now registered after the Router listener. This means that specific Firewall URLs (like /login_check and /logout) must now have proper routes defined in your routing configuration. Also, if you have a custom 404 error page, make sure that you do not use any security related features such as is_granted on it.

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

+0

Sì, lo hanno aggiunto alla documentazione dopo aver ricevuto più post su GitHub ... Non sono ancora un grande fan di come viene gestito. – Nick

+0

[Symfony 2.8 rileva l'eccezione e restituisce invece false] (https://github.com/symfony/symfony/pull/15953). Quindi non c'è più errore, ma potrebbe non essere proprio il comportamento che desideri. – gapple

2

vorrei suggerire il controllo per app.security.token ad essere più rigorosi e valutare a true anche quando l'utente è anonimo.

Se si controlla per app.user valuterà false nei modelli di eccezione, ma anche quando il firewall è presente (= modelli regolari), ma l'utente non è connesso. Ciò impedirà, ad esempio, la visualizzazione di un pulsante di accesso.

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

Problemi correlati