Django – #27 – REST API cz. 3 – Wbudowana strona logowania

Wprowadzenie.

We wpisie przedstawiam wbudowany mechanizm logowania, który dostarcza nam Django REST Framework. Dzięki tej funkcjonalności możemy szybko i w prosty sposób testować naszą aplikację pod względem dostępu do danych przez konkretnego autoryzowanego użytkownika.

Zakres artykułu.

  • Dodanie mechanizmu logowania do wbudowanej strony frameworka REST

Dodanie mechanizmu logowania do wbudowanej strony frameworka REST

Jedynym krokiem jaki należy wykonać, aby dodać wbudowany mechanizm logowania jest dodanie ścieżki w pliku urls.py. Poprzez dodanie tej funkcji na stronie, gdzie odpytujemy nasze API w pasku na górze po prawej stronie, będziemy mieli dostępny przycisk Log in, który przekieruje nas na inną stronę, z której będziemy mogli się zalogować na dowolnego użytkownika.

from django.contrib import admin
from django.urls import path, include # new
from restapiapp import views

urlpatterns = [
    path('admin/', admin.site.urls),

    # API
    path('api/authors', views.AuthorList.as_view()),
    path('api/books', views.BookList.as_view()),
    path('api/borrows', views.BorrowList.as_view()),

    # DRF
    path('api-auth/', include('rest_framework.urls')), # new
]

W celu przetestowania aplikacji wylogujmy się z panelu administratora. Następnie przejdźmy na dowolną stronę z API na przykład http://127.0.0.1:8000/api/authors

Widok strony http://127.0.0.1:8000/api/authors przed wprowadzeniem modyfikacji w pliku urls.py.

Widok strony http://127.0.0.1:8000/api/authors po wprowadzeniu modyfikacji w pliku urls.py.

Naciśnijmy na przycisk Log in, a następnie przy pomocy formularza sprawdźmy czy możemy się zalogować na konto innego użytkownika, którego wcześniej dodaliśmy.

Po pomyślnym zalogowaniu się nasz login powinien być widoczny, na górnym pasku po prawej stronie, w miejscu przycisku Log in.

W ten oto sposób, przy pomocy jednej linijki kodu mamy dostępny gotowy mechanizm logowania.

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.