Lær, hvordan du opretter et sikkert login-system med sociale mediekonti i Django ved hjælp af OAuth.

Social autentificering er en måde at bekræfte en persons identitet gennem en social konto i stedet for at bruge adgangskoder. I webudvikling er det altid nyttigt at autentificere brugere uden adgangskoder. På denne måde kan de logge ind via sociale apps som Google, Twitter eller GitHub.

Aktivering af social autentificering er en fantastisk måde at forbedre din applikations sikkerhed ved at reducere risikoen for almindelige adgangskoderelaterede sårbarheder. Det vil også forbedre brugeroplevelsen af ​​din app, fordi brugerne ikke behøver at huske mange adgangskoder.

Brugergodkendelse i Django

Django leverer et standardgodkendelsessystem, som udviklere kan arbejde med. Dette autentificeringssystem bruger dog traditionel godkendelse, som involverer manuel indsamling af data såsom brugernavn, e-mail, adgangskode, fornavn og efternavn på brugeren.

Designet er Djangos autentificeringssystem meget generisk og giver ikke mange funktioner, der bruges i de fleste web-autentificeringssystemer i dag. For at supplere dette skal du bruge tredjepartspakker som f.eks

instagram viewer
django-allauth pakke.

Sådan aktiveres OAuth i Django

For at godkende dine brugere ved hjælp af OAuth i en Django-applikation kan du bruge en Django-pakke kaldet django-allauth.

Django Allauth er en pakke, der håndterer godkendelse, registrering, kontostyring og tredjeparts (social) kontogodkendelse til dit Django-projekt. De følgende trin vil guide dig mod opsætning af Django Allauth til dit Django-projekt.

Trin 1: Installer og opsæt Django-Allauth

Hvis du endnu ikke gør det, skabe et virtuelt miljø og installere django-allauth via pip:

pip install django-allauth

Bemærk, at du skal bruge Python 3.5 eller nyere og Django 2.0 eller højere for at det virker.

Trin 2: Tilføj påkrævede apps til Django for Django-Allauth

Efter installation django-allauth, åben din settings.py fil og tilføj følgende apps til din INSTALLERET_APPS liste:

INSTALLED_APPS = [


Add your other apps here

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

Her er nogle punkter at bemærke om nogle af ovenstående apps:

  • Det allauth.socialaccount app vil lade brugere logge ind via sociale apps såsom X (tidligere Twitter), Instagram, GitHub og andre.
  • Det django.contrib.sites app er en indbygget Django-ramme, der kræves til django-allauth at arbejde. Appen giver mulighed for at administrere og differentiere flere websteder inden for et enkelt Django-projekt. Du kan forstå, hvordan det fungerer ved at henvise til Django dokumentation.

Trin 3: Definer godkendelses-backends for dit projekt

Det næste trin er at definere, hvordan du vil godkende dine brugere. Du kan gøre dette ved at konfigurere AUTHENTICATION_BACKENDS i din settings.py fil. Til django-allauth, bør du tilføje disse:

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

Kodestykket ovenfor definerer to godkendelses-backends:

  1. Den første er den standard, der bruges af Django. Dette vil tillade adminbrugeren at logge ind på adminpanelet uanset django-allauths konfiguration.
  2. Den anden definerer godkendelses-backend for django-allauth.

Trin 4: Tilføj dit websteds-id

I din indstillingsfil skal du tilføje id'et for dit websted. Her er et eksempel:

SITE_ID = 1

Som standard er der et websted kaldet eksempel.com i administratorpanelet. Du kan beslutte at ændre denne side eller tilføje en for dig selv. I begge tilfælde skal du logge ind på administratorpanelet og navigere til Websteder app.

For at få site-id'et for et Django-websted skal du åbne din Kommandolinjegrænseflade (CLI) og kør denne kommando:

python manage.py shell

Skriv derefter dette script ind i Python-skallen:

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)

Ovenstående kode vil udskrive navnet på webstedet samt dets ID.

Trin 5: Konfigurer dine URL'er

I dit projekt urls.py fil, skal du konfigurere URL-mønsteret for django-allauth. Sådan skal det se ud:

from django.urls import path, include

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

Med denne opsætning kan du starte din udviklingsserver og navigere til http://127.0.0.1:8000/accounts/. Hvis du har FEJLFINDE indstillet til Rigtigt, bør du se en liste over tilgængelige URL-mønstre for django-allauth.

Hvis du har gjort ovenstående, skulle dit projekt være klar til social autentificering.

Sådan implementerer du Google Login/Signup i din Django-app

Efter opsætning django-allauth, bør du være klar til at lade dine brugere godkende sig selv med deres sociale konti såsom Google.

Trin 1: Registrer din sociale kontoudbyder i dine installerede apps

I din settings.py fil, skal du tilføje den sociale kontoudbyder i INSTALLERET_APPS. I dette tilfælde er det Google. Andre muligheder er Instagram, X osv.

INSTALLED_APPS = [


Add your other apps here

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

Trin 2: Opret dit klient-id og hemmelige nøgle på Google

For at fuldføre dette trin skal du have oprettet en Google-konto. Hvis du har gjort det, skal du følge disse næste trin:

  1. Gå over til Google Cloud-konsol at oprette et nyt projekt. Først skal du klikke på rullemenuen vist på billedet nedenfor:
  2. Klik derefter på NYT PROJEKT:
  3. Indtast et navn til dit projekt, og klik derefter på SKAB knap:
  4. Med dit projekt valgt, klik på hamburgermenuen. Vælg API'er og tjenester, derefter Legitimationsoplysninger:
  5. Klik derefter på den indstilling, der siger KONFIGURER SAMTYKKESKÆRM og vælg Ekstern:
  6. På næste side skal du indtaste et navn til din app og inkludere en e-mail, hvis det er nødvendigt. Du kan også udforske konfigurationerne for nogle tilpasninger. Når du er færdig, klik på GEM OG FORTSÆT.
  7. Vælg i menuen til venstre Legitimationsoplysninger. Klik derefter på OPRET KREDENTIALER og vælg OAuth-klient-id.
  8. Vælg derefter Ansøgningstype og indtast et navn for det samme. Til denne tutorial er Ansøgningstype vil være Webapplikation.
  9. Tilføj derefter URI'er for Autoriseret JavaScript-oprindelse og Autoriseret omdirigerings-URI'er. Dit websteds vært skal være JavaScript-oprindelsen, og systemet vil omdirigere brugere til omdirigerings-URI'en efter godkendelse. Omdirigerings-URI'en skal typisk indeholde dit-værtsnavn/accounts/google/login/callback/. For udviklingstilstand vil det være: http://127.0.0.1:8000/accounts/google/login/callback/. Klik på SKAB når det er gjort.
  10. Når du har oprettet legitimationsoplysningerne, kan du kopiere din Klient-id eller Klientens hemmelighed til et sikkert sted eller download dem som JSON-filer.

Trin 3: Tilføj dit klient-id og hemmelige nøgle til din Django-app

Når du har oprettet de nødvendige legitimationsoplysninger, skal du navigere til http://127.0.0.1:8000/admin, Vælg Sociale applikationer, og opret en ny social applikation. Følg disse trin for at oprette en ny social app:

  1. Tilføj en udbyder. Udbyderen henviser til den app, du godkender din bruger med. I dette tilfælde er det Google, i et andet tilfælde kan det være Snapchat.
  2. Indtast et navn til din nye sociale app. Sørg for, at det er et fornuftigt navn
  3. Indsæt i Klient-id du har kopieret fra Google.
  4. For Hemmelig nøgle, indsæt i Klientens hemmelighed du har kopieret fra Google.
  5. Det Nøgle feltet gælder ikke for godkendelse med Google, så ignorer det.
  6. Til sidst skal du vælge et websted, du vil knytte den sociale applikation til.

Trin 4: Test din Google-godkendelse

Log ud af dit adminpanel og naviger til http://127.0.0.1:8000/accounts/login/. Du vil se en mulighed for at logge ind via Google.

Klik på den for at omdirigere til samtykkeskærmen. Vælg derefter en konto at logge ind med.

Når du har valgt en konto, bliver du omdirigeret til http://127.0.0.1:8000/accounts/profile/. Det betyder, at din app fungerer perfekt. Du kan oprette brugerdefinerede skabeloner til at erstatte standardskabelonerne.

Forbedring af brugerregistrering med social godkendelse i Django

Aktivering af social godkendelse er en fantastisk måde at hjælpe dine brugere med at få en god oplevelse med at registrere sig til din applikation. Der er andre måder at aktivere godkendelse på i Django, og du bør udforske dem for at beslutte, hvad der er bedst til din brug.