Lær hvordan du oppretter et sikkert påloggingssystem med sosiale mediekontoer i Django ved hjelp av OAuth.

Sosial autentisering er en måte å bekrefte en persons identitet gjennom en sosial konto i stedet for å bruke passord. I webutvikling er det alltid nyttig å autentisere brukere uten passord. På denne måten kan de logge på via sosiale apper som Google, Twitter eller GitHub.

Aktivering av sosial autentisering er en flott måte å forbedre applikasjonens sikkerhet ved å redusere risikoen for vanlige passordrelaterte sårbarheter. Det vil også forbedre brukeropplevelsen av appen din fordi brukerne ikke trenger å huske mange passord.

Brukerautentisering i Django

Django tilbyr et standard autentiseringssystem for utviklere å jobbe med. Dette autentiseringssystemet bruker imidlertid tradisjonell autentisering, som innebærer manuell innsamling av data som brukernavn, e-post, passord, fornavn og etternavn til brukeren.

Designet er Djangos autentiseringssystem veldig generisk og gir ikke mange funksjoner som brukes i de fleste webautentiseringssystemer i dag. For å utfylle dette, vil du bruke tredjepartspakker som

instagram viewer
django-allauth pakke.

Slik aktiverer du OAuth i Django

For å autentisere brukerne dine ved å bruke OAuth i en Django-applikasjon, kan du bruke en Django-pakke kalt django-allauth.

Django Allauth er en pakke som håndterer autentisering, registrering, kontoadministrasjon og tredjeparts (sosial) kontoautentisering for ditt Django-prosjekt. Følgende trinn vil veilede deg mot å sette opp Django Allauth for ditt Django-prosjekt.

Trinn 1: Installer og konfigurer Django-Allauth

Hvis du ennå ikke har gjort det, lage et virtuelt miljø og installere django-allauth via pip:

pip install django-allauth

Merk at du må bruke Python 3.5 eller høyere og Django 2.0 eller høyere for at det skal fungere.

Trinn 2: Legg til nødvendige apper til Django for Django-Allauth

Etter installasjon django-allauth, åpne din settings.py fil og legg til følgende apper til din INSTALLERT_APPS liste:

INSTALLED_APPS = [


Add your other apps here

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

Her er noen punkter å merke seg om noen av appene ovenfor:

  • De allauth.sosialkonto appen lar brukere logge på via sosiale apper som X (tidligere Twitter), Instagram, GitHub og andre.
  • De django.contrib.sites app er et innebygd Django-rammeverk som kreves for django-allauth å jobbe. Appen gir muligheten til å administrere og differensiere flere nettsteder innenfor et enkelt Django-prosjekt. Du kan forstå hvordan det fungerer ved å referere til Django dokumentasjon.

Trinn 3: Definer autentiseringsstøttene for prosjektet ditt

Det neste trinnet er å definere hvordan du vil autentisere brukerne dine. Du kan gjøre dette ved å konfigurere AUTHENTICATION_BACKENDS i din settings.py fil. Til django-allauth, bør du legge til disse:

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

Kodebiten ovenfor definerer to autentiseringsbackends:

  1. Den første er standarden som brukes av Django. Dette vil tillate admin-brukeren å logge på admin-panelet uavhengig av django-allauths konfigurasjon.
  2. Den andre definerer autentiseringsbackend for django-allauth.

Trinn 4: Legg til nettsteds-IDen din

I innstillingsfilen din bør du legge til IDen for nettstedet ditt. Her er et eksempel:

SITE_ID = 1

Som standard er det et nettsted som heter eksempel.com i administrasjonspanelet. Du kan velge å endre denne siden eller legge til en selv. I begge tilfeller bør du logge på administrasjonspanelet og navigere til Nettsteder app.

For å få nettsteds-IDen for et Django-nettsted, åpne din Kommandolinjegrensesnitt (CLI) og kjør denne kommandoen:

python manage.py shell

Deretter skriver du dette skriptet inn i Python-skallet:

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)

Koden ovenfor vil skrive ut navnet på nettstedet samt ID-en.

Trinn 5: Konfigurer URL-ene dine

I prosjektet ditt urls.py fil, konfigurer URL-mønsteret for django-allauth. Slik skal det se ut:

from django.urls import path, include

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

Med dette oppsettet kan du starte utviklingsserveren og navigere til http://127.0.0.1:8000/accounts/. Hvis du har FEIL satt til ekte, bør du se en liste over tilgjengelige URL-mønstre for django-allauth.

Hvis du har gjort det ovenfor, bør prosjektet ditt være klart for sosial autentisering.

Slik implementerer du Google Login/Signup i Django-appen din

Etter oppsett django-allauth, bør du være klar til å la brukerne autentisere seg med sosiale kontoer som Google.

Trinn 1: Registrer din sosiale kontoleverandør i dine installerte apper

I din settings.py fil, bør du legge til leverandøren av sosiale kontoer i INSTALLERT_APPS. I dette tilfellet er det Google. Andre alternativer er Instagram, X, etc.

INSTALLED_APPS = [


Add your other apps here

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

Trinn 2: Opprett klient-ID og hemmelig nøkkel på Google

For å fullføre dette trinnet må du ha opprettet en Google-konto. Hvis du har gjort det, følg disse neste trinnene:

  1. Gå over til Google Cloud-konsoll å lage et nytt prosjekt. Først klikker du på rullegardinmenyen vist i bildet nedenfor:
  2. Klikk deretter på NYTT PROSJEKT:
  3. Skriv inn et navn for prosjektet ditt, og klikk deretter på SKAPE knapp:
  4. Med prosjektet ditt valgt, klikk på hamburgermenyen. Plukke ut APIer og tjenester, deretter Legitimasjon:
  5. Deretter klikker du på alternativet som sier KONFIGURER SAMTYKKESKJERM og velg Utvendig:
  6. På neste side skriver du inn et navn for appen din og inkluderer en e-post der det er nødvendig. Du kan også utforske konfigurasjonene for litt tilpasning. Når du er ferdig, klikker du på LAGRE OG FORTSETT.
  7. Velg i menyen til venstre Legitimasjon. Etter det klikker du på OPPRETT LEGITIDSMÅL og velg OAuth-klient-ID.
  8. Deretter velger du Søknadstype og skriv inn et navn for det samme. For denne opplæringen er Søknadstype vil være Webapplikasjon.
  9. Deretter legger du til URIer for Autorisert JavaScript-opprinnelse og Autoriserte omdirigerings-URIer. Nettstedets vert bør være JavaScript-opprinnelsen, og systemet vil omdirigere brukere til viderekoblings-URIen etter autentisering. Omdirigerings-URI-en skal vanligvis inneholde your-host-name/accounts/google/login/callback/. For utviklingsmodus vil det være: http://127.0.0.1:8000/accounts/google/login/callback/. Klikk på SKAPE når en gang er ferdig.
  10. Etter å ha opprettet legitimasjonen, kan du kopiere din klient-ID eller Klienthemmelighet til et trygt sted eller last dem ned som JSON-filer.

Trinn 3: Legg til klient-ID og hemmelig nøkkel til Django-appen din

Etter å ha opprettet den nødvendige legitimasjonen, naviger til http://127.0.0.1:8000/admin, plukke ut Sosiale applikasjoner, og opprette en ny sosial applikasjon. Følg disse trinnene for å lage en ny sosial app:

  1. Legg til en leverandør. Leverandøren refererer til appen du autentiserer brukeren din med. I dette tilfellet er det Google, i et annet tilfelle kan det være Snapchat.
  2. Skriv inn et navn for den nye sosiale appen din. Pass på at det er et fornuftig navn
  3. Lim inn klient-ID du kopierte fra Google.
  4. For Hemmelig nøkkel, lim inn Klienthemmelighet du kopierte fra Google.
  5. De Nøkkel feltet gjelder ikke for autentisering med Google, så ignorer det.
  6. Til slutt velger du et nettsted du vil knytte den sosiale applikasjonen til.

Trinn 4: Test Google-autentiseringen din

Logg ut av administrasjonspanelet og naviger til http://127.0.0.1:8000/accounts/login/. Du vil se et alternativ for å logge på via Google.

Klikk på den for å omdirigere til samtykkeskjermen. Deretter velger du en konto du vil logge på med.

Når du har valgt en konto, blir du omdirigert til http://127.0.0.1:8000/accounts/profile/. Dette betyr at appen din fungerer perfekt. Du kan lage egendefinerte maler for å erstatte standardmalene.

Forbedre brukerregistrering med sosial autentisering i Django

Aktivering av sosial autentisering er en fin måte å hjelpe brukerne dine med å få en god opplevelse av å registrere seg for applikasjonen din. Det finnes andre måter å aktivere autentisering på i Django, og du bør utforske dem for å bestemme hva som er best for din brukssituasjon.