Warum meldet sich der Django Admin Login 403 CSRF Fehler?

8

Ich führe Django 1.2.2 aus und erhalte den folgenden Fehler, wenn ich versuche, mich beim Django-Administrator anzumelden:

  

Verboten (403) CSRF-Verifizierung   gescheitert. Anfrage abgebrochen.

     

Grund für das Scheitern gegeben:

     

Kein CSRF oder Sitzungscookie.

** Ich habe KEINE Anpassung an den Barebones-Admin vorgenommen und wenn ich die Quelle überprüfe, gibt es ein CSRF-Token in dem Formular, in dem ich glaube, dass es der richtige Ort ist.

Wenn ich mir die tatsächliche Anfrage ansehe, die gesendet wird, wird ein CSRF-Token gesendet, aber Django sagt immer noch, dass die CSRF-Überprüfung fehlgeschlagen ist.

Kann mir jemand in die richtige Richtung zeigen? Warum passiert das?

    
thomallen 09.09.2010, 15:51
quelle

3 Antworten

5

1) Haben Sie 'django.middleware.csrf.CsrfViewMiddleware' in Ihrem settings.MIDDLEWARE_CLASSES ?

2) Sind Sie sicher, dass Sie schon immer auf 1.2.2 waren? Das kam erst letzte Nacht heraus ...

    
Steve Jalim 09.09.2010, 15:58
quelle
6

Ich hatte das gleiche Problem mit Django 1.2.1 FINAL. Da ich wusste, dass Django auf unserer Produktion niemals aus verschiedenen Gründen aktualisiert werden würde, fand ich einen Workaround, den ich in meine Entwicklungsversion von settings.py implementierte und die production settings.py unberührt ließ.

Erstellen Sie in Ihrem Anwendungsverzeichnis eine middleware.py -Datei mit dem folgenden Code:

%Vor%

Fügen Sie dies in Ihrer Entwicklungsversion von settings.py in MIDDLEWARE_CLASSES:

ein %Vor%

Vielleicht nicht die sicherste Lösung, aber unsere Django-Site ist streng intern, so dass ein minimales Risiko für jede Art von böswilligen Handlungen besteht. Diese Lösung ist einfach und beinhaltet keine Änderungen an Vorlagen / Ansichten, und sie hat sofort funktioniert (im Gegensatz zu anderen, die ich ausprobiert habe).

Hoffentlich findet jemand in einer ähnlichen Situation wie ich das nützlich.

Der Dank geht an John McCollum, auf dessen Seite ich habe habe das gefunden.

    
bzx 14.12.2010 16:59
quelle
1

Laut den Dokumenten brauchen Sie nicht nur das versteckte csrf-Formularfeld, aber auch das csrftoken -Cookie. Die von Ihnen angegebene Fehlermeldung weist auf einen fehlenden Cookie hin.

Ich würde in den Cookies Ihres Browsers nachsehen, ob der csrftoken -Cookie vorhanden ist.

    
slypete 09.09.2010 21:08
quelle

Tags und Links