2016-05-23 18 views
1

tl; dr: Python Neuling, Djangos Sitzung nicht ordnungsgemäß weitergegeben, während mit HTTPSPython Django Sitzung returns "None"


Ich baue einen einfachen Web-Service, der auf Sitzungs-/Cookies verläßt einen Benutzer zur Authentifizierung .

Während der ersten Authentifizierung ich eine bestimmte Sitzung wie folgt konfiguriert werden:

request.session['userSecureId'] = "blabla" 
return HttpResponseRedirect('http://localhost/secure',context) 

An dieser Stelle ein neuer Sitzungsschlüssel wurde Tabelle django_session hinzugefügt. Eine grundlegende b64 dekodieren auf dem session_data Feld auf das Vorhandensein von userSecureId '

Auf meiner Ansicht bestätigen, überprüfe ich, ob diese Sitzung wie folgt vorhanden sind:

if request.session.get('userSecureId'): 
    # do something 

Wenn ich versuche, diese auf meinem lokalen System (plain HTTP), es funktioniert großartig. Also war mein nächster Schritt, es auf meinem entfernten Server mit aktiviertem SSL zu laufen. Ich habe SESSION_COOKIE_SECURE = True auf meinem settings.py konfiguriert, aber jetzt ist der von 'userSecureId' zurückgegebene Wert immer None.

Dies ist wahrscheinlich ein Neuling Frage, so wird jeder Zeiger geschätzt werden =)

Zusätzlich Wenn ich request.session.session_key drucke ich bin in der Lage den Sitzungsschlüssel erfolgreich abgerufen werden, was bedeutet, Django richtig mein sessionid Cookie erkennen, kann aber den Inhalt von session_value nicht decodieren

EDIT: Ich habe gerade versucht, auf Django auf meinem Remote-System (gleiche Konfiguration) zuzugreifen, und ich bin mit dem gleichen Problem konfrontiert. Ich habe keine Ahnung, warum ich den Sitzungswert nicht ausführen kann. Code funktioniert 127.0.0.1 w/o Problem mit obwohl

Antwort

0

-here und here Nach

eine Sitzung zwischen HTTP und HTTPS zu teilen (und Cross-Domain auch), Sie SESSION_COOKIE_DOMAIN in den Einstellungen festlegen sollten.

SESSION_COOKIE_DOMAIN = '.example.com' 
+0

Danke, aber es hat nicht geholfen. Mein Cookie wird von Django an Port 443 korrekt erkannt, aber aus irgendeinem Grund gibt der session_value nur 'None' zurück. – PERPO