2012-12-03 3 views
5

J'utilise Django 1.4. J'ai créé le fichier 403.html dans le même répertoire que 404.html (la page d'erreur 404 fonctionne très bien). Oui, j'ai lu this. Puis-je désactiver les cookies dans mon navigateur, essayez de vous connecter et voir la page par défaut 403 erreur, pas la mienne page 403.html:403 pages dans Django

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

Je redémarrés Apache, mais il ne aide pas.

Comment le réparer? Merci

Répondre

8

Ce n'est pas la page par défaut 403 erreur. Vous voyez ce message parce que le CSRF middleware ne fonctionne pas lorsque les cookies sont désactivés.

Votre modèle personnalisé 403 n'a aucun effet car le middleware CSRF n'utilise pas la vue générale 403, mais la vue définie par le paramètre CSRF_FAILURE_VIEW, is defined in django.conf.global_settings comme django.views.csrf.csrf_failure. Comme vous pouvez le voir in the source, le message que vous voyez est définitivement dans la vue.

Vous pouvez créer votre propre CSRF_FAILURE_VIEW, mais qui est sans doute pas ce que vous voulez. Je vous suggère de tout laisser tel quel et de simplement supprimer les cookies ou d'utiliser un autre navigateur pour tester en tant qu'utilisateur non authentifié.

+0

Je veux juste prévoir la situation, si l'utilisateur va au сookie désactivé, et qu'il affiche ma page 403. C'est, je dois changer la ([source] https://github.com/django /django/blob/1.4.2/django/views/csrf.py)? – tim

+2

Ne changez pas la source Django! Créez une nouvelle vue et définissez CSRF_FAILURE_VIEW dans vos paramètres. Alternativement, vous pouvez vérifier en JavaScript si les cookies sont activés et désactiver la connexion. –

Questions connexes