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
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:
- Den første er standarden som brukes av Django. Dette vil tillate admin-brukeren å logge på admin-panelet uavhengig av django-allauths konfigurasjon.
- 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:
- Gå over til Google Cloud-konsoll å lage et nytt prosjekt. Først klikker du på rullegardinmenyen vist i bildet nedenfor:
- Klikk deretter på NYTT PROSJEKT:
- Skriv inn et navn for prosjektet ditt, og klikk deretter på SKAPE knapp:
- Med prosjektet ditt valgt, klikk på hamburgermenyen. Plukke ut APIer og tjenester, deretter Legitimasjon:
- Deretter klikker du på alternativet som sier KONFIGURER SAMTYKKESKJERM og velg Utvendig:
- 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.
- Velg i menyen til venstre Legitimasjon. Etter det klikker du på OPPRETT LEGITIDSMÅL og velg OAuth-klient-ID.
- Deretter velger du Søknadstype og skriv inn et navn for det samme. For denne opplæringen er Søknadstype vil være Webapplikasjon.
- 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.
- 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:
- 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.
- Skriv inn et navn for den nye sosiale appen din. Pass på at det er et fornuftig navn
- Lim inn klient-ID du kopierte fra Google.
- For Hemmelig nøkkel, lim inn Klienthemmelighet du kopierte fra Google.
- De Nøkkel feltet gjelder ikke for autentisering med Google, så ignorer det.
- 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.