Ich bin neu in Djangos Sitzungen und habe versucht, einen Login-Cookie für meine Website zu erstellen. Benutzer auf meiner Website registrieren über soziale Website (Dampf in diesem Fall), Dafür habe ich verschiedene Funktionen: Index
Ansicht, Login, LoginProcess
.Django: Cookies richtig einstellen
Information:
Index
Ansicht ist eine Homepage (127.0.0.1
), Login
Funktion Benutzer LoginProcess
, in diesem Prozess leitet, i ein Cookie gesetzt haben.
request.set_cookie(key='logged', value=True)
request
ist beispielsweise, dass alle drei Funktionen in meinem Code, ich habe die in Schlüssel auf True angemeldet gesetzt, die von Index-Funktion gelesen werden sollte.
Index Funktion:
def index(request):
if request.COOKIES.get('logged') == True:
return HttpResponse("1 - User is logged in")
else:
return HttpResponse("0 - User is not logged in)
Leider ist dies bis bringt Aussage 0 (Benutzer ist nicht angemeldet), auch wenn ich auf der Website angemeldet bin, ist der Wert der angemeldeten Schlüssel None
.
Problem:
Index
Funktion kann nicht erkennen, dass logged
Cookies in LoginProcess
Funktion registriert wurden.
Frage:
Ich werde auch die Benutzername in Cookies speichern, so dass System, welche Benutzer Daten sollten sie verwenden bestimmen können, ich weiß, dass es für die clientseitige Cookies sehr schlecht ist, was der beste Weg ist es zu tun?
Wie könnte ich dieses Problem beheben? Gibt es eine bessere Möglichkeit, Anmeldecookies einzurichten? Gibt es noch eine andere Möglichkeit, die Login-Sitzung einzurichten?
Also im Grunde, wie könnte ich Cookie in der ersten Funktion setzen und seinen Wert von der zweiten Funktion bekommen?
Hinweis: Es gibt kein Problem mit der Authentifizierung, ist mein Hauptanliegen, Cookies ordnungsgemäß zu setzen.
Django als ziemlich vollständiges und erweiterbares Authentifizierungssystem ('contrib.auth'), warum es nicht verwenden, anstatt das Rad neu zu erfinden? –
@brunodesthuilliers wie ich in meinem Beitrag erwähnte, verwende ich soziale Authentifizierung, Custom made System gibt mir mehr Funktionen und ist insgesamt einfacher für mich. – ShellRox
Wie schon erwähnt 'contrib.auth' _ist erweiterbar_ und es gibt Beispiele für soziale Auth-Integration (sogar einige Pluggable-Apps FWIW). Bedenken Sie auch, dass jede Pluggable-App, die Auth und/oder Berechtigungen benötigt, sehr wahrscheinlich (das ist eine Untertreibung) von 'contrib.auth' abhängig ist. Aber wenn Sie wirklich Schmerzen lieben und es vorziehen, Ihre eigenen zu rollen, können Sie immer noch sehen, wie 'contrib.auth' diesen Teil des Problems behandelt. –