|||

Django – #38 – REST API cz. 13 – Generowanie tokena dla istniejących użytkowników

Wprowadzenie.

W poprzednim wpisie przedstawiłem, w jaki sposób możemy zrealizować uwierzytelnianie przy pomocy tokena. Omawiany Token był wówczas tworzony w momencie tworzenia nowego konta. Wyobraźmy sobie taki przypadek, że posiadamy już aplikację, mamy zarejestrowanych użytkowników i chcemy wprowadzić dodatkową funkcjonalność w postaci tokena uwierzytelniającego. W związku z takim przypadkiem we wpisie przedstawiłem, w jaki sposób generować token dla aktualnych użytkowników oraz w jaki sposób użytkownik może pobrać swój token, żeby na przykład wprowadzić go do innej aplikacji korzystającej z naszego API.

  1. Django REST API cz. 1– Tworzenie nowego projektu 
  2. Django REST API cz. 2 – ListAPIView 
  3. Django REST API cz. 3 – Wbudowana strona logowania
  4. Django REST API cz. 4 – Widoki generyczne
  5. Django REST API cz. 5 – ListCreateAPIView i konfiguracja dostępu
  6. Django REST API cz. 6 – Uszczegóławianie odpowiedzi  
  7. Django REST API cz. 7 – Określenie z góry wartości danych
  8. Django REST API cz. 8 – RetrieveDestroyAPIView
  9. Django REST API cz. 9 – RetrieveUpdateAPIView 
  10. Django REST API cz. 10 – Nadpisywanie zachowań metod przed/po operacji zapisu/usuwania
  11. Django REST API cz. 11 – Rejestracja nowego użytkownika poprzez API  
  12. Django REST API cz. 12 – Uwierzytelnianie przy pomocy Tokena 
  13. Django REST API cz. 13 – Generowanie tokena dla istniejących użytkowników ⇐ 

Zakres artykułu.

  • Generowanie tokena dla istniejących użytkowników

Generowanie tokena dla istniejących użytkowników

W pierwszym kroku stwórzmy serializer dla modelu Token. Dodatkowo niech ten serializer będzie zawierał tylko jedno pole o nazwie key, ponieważ pole to zawiera tokeny użytkowników.

Przejdźmy teraz do pliku views.py, gdzie zaimportujmy model Token oraz nowo stworzony serializer TokenSerializer

W następnym kroku stwórzmy nową klasę widoku UserTokenList(), która będzie odpowiedzialna za zwracanie naszego tokena. W moim przypadku zastosowałem dziedziczenie po klasie generics.ListAPIView(), ponieważ wprowadzany adres nie zawiera numeru id z naszym tokenem. Użycie klasy ListAPIView() powoduje, że w odpowiedzi dostaniemy całą listę tokenów, dlatego w tym przypadku musimy napisać metodę get_queryset(), gdzie do modelu Token należy zastosować filtr po użytkowniku, który wysyła request. Drugą modyfikacją klasy, którą należy przeprowadzić jest nadpisanie metody get(). W tym przypadku musimy sprawdzić, czy nasz użytkownik znajduje się w bazie danych użytkowników, jeżeli użytkownik istnieje, wówczas sprawdzamy, czy dla naszego użytkonika w bazie danych jest wygenerowany token, jeżeli takiego tokenu nie ma, wówczas trzeba wykonać dodatkową czynność, czyli należy stworzyć token

Na koniec stwórzmy ścieżkę łączącą url z klasą widoku.

W tej chwili możemy przeprowadzić testy. W moim przypadku jak możecie zobaczyć mam dwa tokeny dla użytkownika Antek oraz Tomek.

Zaloguje się na konto Antka i przejdę pod adres 127.0.0.1:8000/api/user/login. Wynik, jaki otrzymałem zamieszczam poniżej.

Teraz tę samą procedurę przeprowadzę dla konta Tomka. Jak możemy zobaczyć, w jednym, jak i drugim przypadku wartości tokenów się zgadzają.

Na koniec sprawdźmy, jak zachowa się aplikacja, gdy zaloguję się na konto admina.

W odpowiedzi dostałem wartość klucza, która nie znajdowała się w bazie danych.

Sprawdźmy zatem, czy wartość tego klucza została wpisana do bazy danych. W tym celu należy przejść do panelu admina.

Jak widzimy, token został dodany do bazy danych i od teraz może zostać użyty przez inne aplikacje w celu uwierzytelniania naszego użytkownika.

  1. Django REST API cz. 1– Tworzenie nowego projektu 
  2. Django REST API cz. 2 – ListAPIView 
  3. Django REST API cz. 3 – Wbudowana strona logowania
  4. Django REST API cz. 4 – Widoki generyczne
  5. Django REST API cz. 5 – ListCreateAPIView i konfiguracja dostępu
  6. Django REST API cz. 6 – Uszczegóławianie odpowiedzi  
  7. Django REST API cz. 7 – Określenie z góry wartości danych
  8. Django REST API cz. 8 – RetrieveDestroyAPIView
  9. Django REST API cz. 9 – RetrieveUpdateAPIView 
  10. Django REST API cz. 10 – Nadpisywanie zachowań metod przed/po operacji zapisu/usuwania
  11. Django REST API cz. 11 – Rejestracja nowego użytkownika poprzez API  
  12. Django REST API cz. 12 – Uwierzytelnianie przy pomocy Tokena 
  13. Django REST API cz. 13 – Generowanie tokena dla istniejących użytkowników ⇐ 

Autor artykułu
Dominik Bednarski

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *