Wie kann ich django-rest-framework-jwt Token bei der Registrierung zurückgeben?

8

Ich habe einen grundlegenden Django-Rest-Service, der

  1. registriert eine Person und
  2. aktualisiert sein Passwort.

Ich möchte darüber noch die jwt-Authentifizierung hinzufügen. Wenn ich dem Tutorial folge, müsste ich eine neue URL namens "api-token-auth" im Projekt urls.py hinzufügen. Aber ich möchte diese neue URL nicht hinzufügen und möchte, dass mein Registrierungsaufruf als Antwort ein Token sendet.

Hier ist mein Code:

serializers.py

%Vor%

views.py

%Vor%
  1. Was sollte getan werden, um dies zu erreichen? sollte ich api-auth-token in der create-Methode meines serialisers aufrufen?
  2. Wie behandelt django-rest-framework-jwt mehrere Authentifizierungstoken und gibt korrekt an, welcher Token zu welchem ​​Benutzer gehört? Vor allem, wenn Token nicht in einer db gespeichert werden.
  3. Wie kann ich diesen Authentifizierungsmechanismus verwenden, um meinen Benutzer zu beschränken, nur seinen Benutzer anzuzeigen / zu aktualisieren / zu löschen?
  4. Wie kann ich diesen Authentifizierungsmechanismus verwenden, um irgendetwas im Allgemeinen zu tun? Zum Beispiel, wenn ein Benutzer seinen Namen in /tmp/abcd.txt schreiben möchte. Wie kann ich sicherstellen, dass nur authentifizierte Benutzer dazu in der Lage sind?
  5. Gibt es mögliche Schlupflöcher in diesem Ansatz? Soll ich denselben Code verwenden, wenn meine App viele klassifizierte Daten speichert?
diwakarb 30.06.2015, 20:01
quelle

2 Antworten

12

Frage 1: Um ein Token zu erstellen, das mit django-rest-framework-jwt funktionieren würde, können Sie eine Funktion verwenden, die wie folgt aussieht:

%Vor%

Sie können diese Funktion zur Ansicht hinzufügen und das Token erstellen, sobald der Benutzer registriert wurde.

Frage 2: JWT-Token müssen nicht in der Datenbank gespeichert werden. Sie können mich darüber lesen, wie JWT bei Ссылка

funktioniert

Frage 3 und 4: Um Token zu verwenden, um den Zugriff auf eine bestimmte Ansicht zu beschränken, insbesondere auf eine APIView oder eine ihrer Unterklassen oder eine Ansicht, die von Django Rest Framework bereitgestellt wird, müssen Sie Folgendes angeben: Permissionsklassen zum Beispiel

%Vor%

Frage 5: Eine mögliche Schlaufe bei der Arbeit mit Django Rest Framework sind die Standardberechtigungen, die Sie aus den Einstellungen Ihrer Anwendung einrichten, wenn Sie beispielsweiseAll in den Einstellungen alle Ansichten öffentlich zugänglich machen, es sei denn, Sie überschreiben ausdrücklich die Berechtigungsklassen.

    
James Muranga 30.06.2015, 22:36
quelle
1

Akzeptierte Antwort enthält Code, der Token generiert, aber nicht zeigt, wie er in Serializer / View integriert wird. Auch nicht sicher, dass manual jwt.encode gut ist, wenn wir bereits jwt_encode_handler haben Um dies zu tun, können Sie SerializerMethodField erstellen und dort ein Token erstellen:

%Vor%

Fügen Sie dann token Feld zu Meta.fields hinzu. Das vollständige Beispiel finden Sie hier

    
user3479125 02.04.2017 07:32
quelle