2012-12-03 20 views
5

Django 1.4 kullanıyorum. 404.html dosyasını 404.html (404 hata sayfası düzgün çalışıyor) ile aynı dizinde oluşturdum. Evet, this'u okudum. Sonra Tarayıcımdaki çerezleri kapatın, benim değil 403.html sayfasını giriş ve varsayılan 403-hata sayfasını görmek için deneyin: 403 sayfalık Django

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

Ben Apache yeniden, ama bu yardım doesnt.

Nasıl düzeltilir? Teşekkürler

cevap

8

Bu, varsayılan 403-hata sayfası değil. Bu mesajı görüyorsunuz, çünkü CSRF middleware çerezler devre dışı bırakıldığında çalışmaz.

Özel 403 şablonunuzun etkisi yoktur, çünkü CSRF ara katman genel 403 görünümünü kullanmaz, ancak CSRF_FAILURE_VIEW ayarı tarafından tanımlanan görünüm django.views.csrf.csrf_failure olarak is defined in django.conf.global_settings. Gördüğünüz gibi in the source, gördüğünüz mesaj görünümde kodlanmış.

Kendi CSRF_FAILURE_VIEW'nizi oluşturabilirsiniz, ancak muhtemelen sizin istediğinizi değil. Her şeyi olduğu gibi bırakmanızı ve çerezleri silmenizi ya da kimliği doğrulanmamış kullanıcı olarak sınamak için başka bir tarayıcı kullanmanızı öneririm.

+0

Kullanıcı sadece engelli bir alan adına giderse ve 403 sayfamı görüntülediyse, durumu sağlamak istiyorum. Yani, [kaynak] 'ı değiştirmem gerekiyor (https://github.com/django /django/blob/1.4.2/django/views/csrf.py)? – tim

+2

Django kaynağını değiştirmeyin! Yeni bir görünüm oluşturun ve ayarlarınızda CSRF_FAILURE_VIEW ayarlayın. Alternatif olarak, çerezlerin etkinleştirilip etkinleştirilmediğini ve giriş bilgilerinin devre dışı bırakıldığını kontrol edebilirsiniz. –