2012-12-03 14 views
5

Io uso Django 1.4. Ho creato il file 403.html nella stessa directory di 404.html (la pagina di errore 404 funziona bene). Sì, ho letto this. Poi spengo i cookie nel browser, cerco di fare il login e visualizzare la pagina 403-errore predefinita, non la mia pagina 403.html:403 pagine in Django

Forbidden (403) 
CSRF verification failed. Request aborted. 
More information is available with DEBUG=True. 

ho riavviato Apache, ma non aiuta.

Come ripararlo? Grazie

risposta

8

Questa non è la pagina predefinita di errore 403. Stai visualizzando questo messaggio perché lo CSRF middleware non funziona quando i cookie sono disabilitati.

vostra abitudine 403 template ha alcun effetto perché il middleware CSRF non usa il generale 403 vista, ma la vista definita dall'impostazione CSRF_FAILURE_VIEW, che is defined in django.conf.global_settings come django.views.csrf.csrf_failure. Come puoi vedere in the source, il messaggio che stai vedendo è codificato nella vista.

È possibile creare il proprio CSRF_FAILURE_VIEW, ma probabilmente non è ciò che si desidera. Ti suggerisco di lasciare tutto come è e basta eliminare i cookie o utilizzare un altro browser per verificare come utente non autenticato.

+0

Voglio solo provvedere alla situazione, se l'utente va in сookie disabilitato, e che ha visualizzato la mia pagina 403. Cioè, ho bisogno di cambiare la [fonte] (https://github.com/django /django/blob/1.4.2/django/views/csrf.py)? – tim

+2

Non modificare la sorgente Django! Crea una nuova vista e imposta CSRF_FAILURE_VIEW nelle tue impostazioni. In alternativa, puoi attivare JavaScript se i cookie sono abilitati e disabilitare il login. –