Dowiedz się, jak stworzyć bezpieczny system logowania do kont w mediach społecznościowych w Django przy użyciu protokołu OAuth.

Uwierzytelnianie społecznościowe to sposób na potwierdzenie tożsamości osoby za pośrednictwem konta społecznościowego zamiast używania haseł. Podczas tworzenia stron internetowych zawsze pomocne jest uwierzytelnianie użytkowników bez haseł. W ten sposób mogą logować się za pośrednictwem aplikacji społecznościowych, takich jak Google, Twitter czy GitHub.

Włączenie uwierzytelniania społecznościowego to świetny sposób na zwiększenie bezpieczeństwa aplikacji poprzez zmniejszenie ryzyka wystąpienia typowych luk w zabezpieczeniach związanych z hasłami. Poprawi to również wygodę korzystania z Twojej aplikacji, ponieważ użytkownicy nie będą musieli pamiętać wielu haseł.

Uwierzytelnianie użytkowników w Django

Django zapewnia domyślny system uwierzytelniania, z którym mogą pracować programiści. Jednak ten system uwierzytelniania wykorzystuje tradycyjne uwierzytelnianie, które polega na ręcznym zbieraniu danych, takich jak nazwa użytkownika, adres e-mail, hasło, imię i nazwisko użytkownika.

instagram viewer

Z założenia system uwierzytelniania Django jest bardzo ogólny i nie zapewnia wielu funkcji używanych obecnie w większości systemów uwierzytelniania sieciowego. Aby to uzupełnić, będziesz chciał użyć pakietów innych firm, takich jak django-allauth pakiet.

Jak włączyć OAuth w Django

Aby uwierzytelnić użytkowników przy użyciu OAuth w aplikacji Django, możesz użyć pakietu Django o nazwie django-allauth.

Django Allauth to pakiet obsługujący uwierzytelnianie, rejestrację, zarządzanie kontami i uwierzytelnianie kont stron trzecich (społecznościowych) dla Twojego projektu Django. Poniższe kroki poprowadzą Cię do skonfigurowania Django Allauth dla Twojego projektu Django.

Krok 1: Zainstaluj i skonfiguruj Django-Allauth

Jeśli jeszcze tego nie zrobiłeś, stworzyć środowisko wirtualne i zainstaluj django-allauth przez pip:

pip install django-allauth

Pamiętaj, że aby to działało, musisz używać Pythona 3.5 lub nowszego oraz Django 2.0 lub nowszego.

Krok 2: Dodaj wymagane aplikacje do Django dla Django-Allauth

Po zainstalowaniu django-allauth, Otwórz swoje ustawienia.py plik i dodaj do niego następujące aplikacje ZAINSTALOWANE_APLIKACJE lista:

INSTALLED_APPS = [


Add your other apps here

# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]

Oto kilka uwag na temat niektórych z powyższych aplikacji:

  • The konto allauth.social aplikacja umożliwi użytkownikom logowanie się za pośrednictwem aplikacji społecznościowych, takich jak X (dawniej Twitter), Instagram, GitHub i inne.
  • The django.contrib.sites app to wbudowana platforma Django, która jest wymagana do django-allauth pracować. Aplikacja zapewnia możliwość zarządzania wieloma witrynami i różnicowania ich w ramach jednego projektu Django. Możesz zrozumieć, jak to działa, odnosząc się do Dokumentacja Django.

Krok 3: Zdefiniuj mechanizmy uwierzytelniania dla swojego projektu

Następnym krokiem jest zdefiniowanie sposobu uwierzytelniania użytkowników. Można to zrobić konfigurując plik AUTHENTICATION_BACKENDS w Twoim ustawienia.py plik. Dla django-allauth, powinieneś dodać te:

AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]

Powyższy fragment kodu definiuje dwa mechanizmy uwierzytelniania:

  1. Pierwszy z nich jest domyślnym używanym przez Django. Umożliwi to użytkownikowi admin zalogowanie się do panelu administracyjnego niezależnie od konfiguracji Django-allauth.
  2. Drugi definiuje backend uwierzytelniania dla django-allauth.

Krok 4: Dodaj identyfikator swojej witryny

W pliku ustawień powinieneś dodać identyfikator swojej witryny. Oto przykład:

SITE_ID = 1

Domyślnie istnieje witryna o nazwie przykład.com w panelu administracyjnym. Możesz zdecydować o modyfikacji tej witryny lub dodać ją dla siebie. W obu przypadkach należy zalogować się do panelu administracyjnego i przejść do zakładki Witryny aplikacja.

Aby uzyskać identyfikator witryny Django, otwórz plik Interfejs wiersza poleceń (CLI) i uruchom to polecenie:

python manage.py shell

Następnie napisz ten skrypt do powłoki Pythona:

from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)

Powyższy kod wydrukuje nazwę witryny oraz jej identyfikator.

Krok 5: Skonfiguruj swoje adresy URL

W Twoim projekcie urls.py plik, skonfiguruj wzorzec adresu URL dla django-allauth. Tak to powinno wyglądać:

from django.urls import path, include

urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]

Dzięki tej konfiguracji możesz uruchomić serwer programistyczny i przejść do http://127.0.0.1:8000/accounts/. Jeśli masz ODPLUSKWIĆ Ustawić PRAWDA, powinna zostać wyświetlona lista dostępnych wzorców adresów URL dla django-allauth.

Jeśli wykonałeś powyższe czynności, Twój projekt powinien być gotowy do uwierzytelnienia społecznościowego.

Jak zaimplementować logowanie/rejestrację Google w swojej aplikacji Django

Po skonfigurowaniu django-allauth, przygotuj się na umożliwienie użytkownikom uwierzytelniania się przy użyciu kont społecznościowych, takich jak Google.

Krok 1: Zarejestruj dostawcę konta społecznościowego w zainstalowanych aplikacjach

W Twoim ustawienia.py pliku, powinieneś dodać dostawcę konta społecznościowego ZAINSTALOWANE_APLIKACJE. W tym przypadku jest to Google. Inne opcje to Instagram, X itp.

INSTALLED_APPS = [


Add your other apps here

# Social account provider (google)
'allauth.socialaccount.providers.google',
]

Krok 2: Utwórz swój identyfikator klienta i tajny klucz w Google

Aby ukończyć ten krok, musisz mieć utworzone konto Google. Jeśli już to zrobiłeś, wykonaj następujące kroki:

  1. Udaj się do Konsola Google Cloud aby stworzyć nowy projekt. Najpierw kliknij menu rozwijane pokazane na obrazku poniżej:
  2. Następnie kliknij NOWY PROJEKT:
  3. Wprowadź nazwę swojego projektu, a następnie kliknij TWORZYĆ przycisk:
  4. Po wybraniu projektu kliknij menu hamburgerowe. Wybierać Interfejsy API i usługi, Następnie Referencje:
  5. Następnie kliknij opcję, która mówi SKONFIGURUJ EKRAN ZGODY i wybierz Zewnętrzny:
  6. Na następnej stronie wprowadź nazwę aplikacji i w razie potrzeby podaj adres e-mail. Możesz także zapoznać się z konfiguracjami w celu dostosowania. Gdy już to zrobisz, kliknij ZAPISZ I KONTYNUUJ.
  7. W menu po lewej stronie wybierz Referencje. Następnie kliknij UTWÓRZ REFERENCJE i wybierz Identyfikator klienta OAuth.
  8. Następnie wybierz Typ aplikacji i wprowadź dla niego nazwę. W tym samouczku plik Typ aplikacji będzie Aplikacja internetowa.
  9. Następnie dodaj identyfikatory URI dla Autoryzowane źródła JavaScript I Autoryzowane identyfikatory URI przekierowań. Hostem Twojej witryny powinien być serwer JavaScript, a system po uwierzytelnieniu przekieruje użytkowników do identyfikatora URI przekierowania. URI przekierowania powinien zazwyczaj zawierać nazwa-hosta/accounts/google/login/callback/. W trybie programistycznym będzie to: http://127.0.0.1:8000/accounts/google/login/callback/. Kliknij TWORZYĆ kiedy już to zrobisz.
  10. Po utworzeniu poświadczeń możesz skopiować plik Identyfikator klienta Lub Sekret klienta w bezpieczne miejsce lub pobierz je jako pliki JSON.

Krok 3: Dodaj swój identyfikator klienta i tajny klucz do swojej aplikacji Django

Po utworzeniu niezbędnych poświadczeń przejdź do http://127.0.0.1:8000/admin, wybierać Aplikacje społecznościowei utwórz nową aplikację społecznościową. Wykonaj poniższe kroki, aby utworzyć nową aplikację społecznościową:

  1. Dodaj dostawcę. Dostawca oznacza aplikację, za pomocą której uwierzytelniasz użytkownika. W tym przypadku jest to Google, w innym przypadku może to być Snapchat.
  2. Wprowadź nazwę swojej nowej aplikacji społecznościowej. Upewnij się, że jest to rozsądna nazwa
  3. Wklej w Identyfikator klienta skopiowałeś z Google.
  4. Dla Sekretny klucz, wklej w Sekret klienta skopiowałeś z Google.
  5. The Klucz pole nie dotyczy uwierzytelniania w Google, więc zignoruj ​​je.
  6. Na koniec wybierz witrynę, z którą chcesz powiązać aplikację społecznościową.

Krok 4: Przetestuj swoje uwierzytelnianie Google

Wyloguj się z panelu administracyjnego i przejdź do http://127.0.0.1:8000/accounts/login/. Zobaczysz opcję zalogowania się przez Google.

Kliknij na nią, aby przekierować do ekranu zgody. Następnie wybierz konto, za pomocą którego chcesz się zalogować.

Po wybraniu konta zostaniesz przekierowany do http://127.0.0.1:8000/accounts/profile/. Oznacza to, że Twoja aplikacja działa idealnie. Możesz tworzyć niestandardowe szablony, aby zastąpić szablony domyślne.

Ulepszanie rejestracji użytkowników dzięki uwierzytelnianiu społecznościowemu w Django

Włączenie uwierzytelniania społecznościowego to świetny sposób, aby ułatwić użytkownikom rejestrację w aplikacji. Istnieją inne sposoby włączania uwierzytelniania w Django i powinieneś je poznać, aby zdecydować, co jest najlepsze dla twojego przypadku użycia.