2016-07-13 18 views
0

Ich habe ein Problem, wenn ich versuche, die Informationen des Benutzers zu erhalten, der in Django angemeldet ist. Mein Login Der Service sieht wie folgt aus:Warum wird der Django-Benutzer AnonymousUser, wenn ich eine Anfrage von einem JS-Client erstelle, diese aber richtig eingestellt ist, wenn ich Django Rest Framework verwende?

username = request.data['username'] 
password = request.data['password'] 
user = authenticate(username=username, password=password) 
if user is not None: 
    if user.is_active: 
      login(request, user) 

Aktuelle Zeit ist richtig zumindest zu arbeiten, wenn Django Ruhe Framework (Es erscheint auch am rechten oberen Rand der Benutzer, der angemeldet ist).

Ich versuche, das Profil des Benutzers, der angemeldet ist, zu bringen, also habe ich einen Profildienst entwickelt, der versucht, den Benutzer einzuloggen, der perfekt funktioniert, wenn Django Rest Framework verwendet.

Das Problem tritt auf, wenn ich versuche, den gleichen Endpunkt von einem JS-Client aufzurufen. Ich denke, es könnte ein Problem sein, etwas nach dem Django-Login im Header zu setzen. Momentan mache ich in meinem JS-Client nichts, aber ich rufe den Login-Endpunkt an, der korrekt zurückkommt. Sollte ich einen Cookie oder etwas in der Kopfzeile jeder Anfrage setzen, damit Django weiß, welcher Benutzer ich bin? Wenn ja, wie sollte das sein?

Vielen Dank im Voraus

Antwort

0

Sollte stelle ich ein Cookie oder etwas in der Kopfzeile jeder Anfrage Django weiß, welcher Benutzer bin ich? Wenn ja, wie sollte das sein?

Sie benötigen definitiv das Session-Cookie, das übergeben werden soll.

Standardmäßig wird es sessionid

+0

sein Wo soll die sessionid eingestellt werden? Wie kann ich dies im JS-Client einstellen? – Miguelme

+0

Ich kenne JS nicht viel und das wird wahrscheinlich davon abhängen, wie Sie die Anfrage ausführen. – Linovia