Naučite se ustvariti varen prijavni sistem z računi družbenih medijev v Djangu z uporabo OAuth.
Socialna avtentikacija je način za potrditev identitete osebe prek socialnega računa namesto z uporabo gesel. Pri spletnem razvoju je vedno koristno avtentikacijo uporabnikov brez gesel. Na ta način se lahko prijavijo prek družbenih aplikacij, kot so Google, Twitter ali GitHub.
Omogočanje socialne avtentikacije je odličen način za izboljšanje varnosti vaše aplikacije z zmanjšanjem tveganja pogostih ranljivosti, povezanih z geslom. Prav tako bo izboljšala uporabniško izkušnjo vaše aplikacije, saj si uporabnikom ne bo treba zapomniti veliko gesel.
Preverjanje pristnosti uporabnika v Djangu
Django ponuja privzeti sistem za preverjanje pristnosti, s katerim lahko delajo razvijalci. Vendar ta sistem preverjanja pristnosti uporablja tradicionalno preverjanje pristnosti, ki vključuje ročno zbiranje podatkov, kot so uporabniško ime, e-pošta, geslo, ime in priimek uporabnika.
Po zasnovi je Djangov sistem za preverjanje pristnosti zelo splošen in ne ponuja veliko funkcij, ki se danes uporabljajo v večini sistemov spletnega preverjanja pristnosti. Za dopolnitev tega boste želeli uporabiti pakete tretjih oseb, kot je
django-allauth paket.Kako omogočiti OAuth v Django
Za preverjanje pristnosti vaših uporabnikov z OAuth v aplikaciji Django lahko uporabite paket Django, imenovan django-allauth.
Django Allauth je paket, ki skrbi za preverjanje pristnosti, registracijo, upravljanje računa in preverjanje pristnosti računa tretjih oseb (družbenih) za vaš projekt Django. Naslednji koraki vas bodo vodili do nastavitve Django Allauth za vaš projekt Django.
1. korak: Namestite in nastavite Django-Allauth
Če to še storite, ustvarite virtualno okolje in namestite django-allauth prek pipa:
pip install django-allauth
Upoštevajte, da morate uporabljati Python 3.5 ali novejši in Django 2.0 ali novejši, da deluje.
2. korak: Dodajte zahtevane aplikacije v Django za Django-Allauth
Po namestitvi django-allauth, odpri svojo nastavitve.py in dodajte naslednje aplikacije v svojo INSTALLED_APPS seznam:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Tukaj je nekaj točk, ki jih je treba upoštevati pri nekaterih od zgornjih aplikacij:
- The allauth.socialaccount aplikacija bo uporabnikom omogočila prijavo prek družbenih aplikacij, kot so X (prej Twitter), Instagram, GitHub in druge.
- The django.contrib.sites app je vgrajeno ogrodje Django, ki je potrebno za django-allauth delati. Aplikacija ponuja možnost upravljanja in razlikovanja več spletnih mest znotraj enega projekta Django. Kako deluje, lahko razumete s sklicevanjem na Django dokumentacija.
3. korak: Določite ozadja za preverjanje pristnosti za svoj projekt
Naslednji korak je določitev načina avtentikacije vaših uporabnikov. To lahko storite tako, da konfigurirate AUTHENTICATION_BACKENDS v tvojem nastavitve.py mapa. Za django-allauth, dodajte tole:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Zgornji delček kode definira dve ozadji za preverjanje pristnosti:
- Prvi je privzeti, ki ga uporablja Django. To bo uporabniku skrbniku omogočilo prijavo v skrbniško ploščo ne glede na konfiguracijo django-allauth.
- Drugi definira zaledje za preverjanje pristnosti django-allauth.
4. korak: dodajte ID svojega spletnega mesta
V datoteko z nastavitvami bi morali dodati ID za vaše spletno mesto. Tukaj je primer:
SITE_ID = 1
Privzeto se imenuje stran example.com v skrbniški plošči. Odločite se lahko, da spremenite to stran ali dodate eno zase. V obeh primerih se morate prijaviti v skrbniško ploščo in se pomakniti do Spletna mesta aplikacija
Če želite pridobiti ID mesta za spletno mesto Django, odprite svoj Vmesnik ukazne vrstice (CLI) in zaženi ta ukaz:
python manage.py shell
Nato napišite ta skript v lupino Python:
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)
Zgornja koda bo natisnila ime spletnega mesta in njegov ID.
5. korak: Konfigurirajte svoje URL-je
V vašem projektu urls.py datoteko, konfigurirajte vzorec URL za django-allauth. Takole bi moralo izgledati:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
S to nastavitvijo lahko zaženete svoj razvojni strežnik in se pomaknete do http://127.0.0.1:8000/accounts/. Če imate DEBUG nastavljena Prav, bi morali videti seznam razpoložljivih vzorcev URL-jev za django-allauth.
Če ste naredili zgoraj navedeno, bi moral biti vaš projekt pripravljen za socialno avtentikacijo.
Kako implementirati prijavo/prijavo Google v vašo aplikacijo Django
Po nastavitvi django-allauth, bi morali biti pripravljeni dovoliti svojim uporabnikom, da se avtentificirajo z njihovimi družabnimi računi, kot je Google.
1. korak: Registrirajte svojega ponudnika socialnih računov v svojih nameščenih aplikacijah
V vašem nastavitve.py datoteko, dodajte ponudnika socialnega računa INSTALLED_APPS. V tem primeru je to Google. Druge možnosti so Instagram, X itd.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
2. korak: Ustvarite ID stranke in skrivni ključ v Googlu
Za dokončanje tega koraka morate imeti ustvarjen Google račun. Če ste to storili, sledite naslednjim korakom:
- Pojdite na Konzola Google Cloud ustvariti nov projekt. Najprej kliknite spustni meni, prikazan na spodnji sliki:
- Nato kliknite na NOV PROJEKT:
- Vnesite ime za svoj projekt in kliknite USTVARJANJE gumb:
- Z izbranim projektom kliknite na meni za hamburgerje. Izberite API-ji in storitve, potem Poverilnice:
- Nato kliknite možnost, ki pravi KONFIGURIRAJTE ZASLON ZA SOGLASJE in izberite Zunanji:
- Na naslednji strani vnesite ime za svojo aplikacijo in po potrebi vključite e-poštno sporočilo. Raziščete lahko tudi konfiguracije za nekaj prilagoditev. Ko končate, kliknite na SHRANI IN NADALJUJ.
- V levem meniju izberite Poverilnice. Po tem kliknite na USTVARITE POVERILNICE in izberite ID odjemalca OAuth.
- Nato izberite Vrsta aplikacije in vnesite ime za isto. Za to vadnico, Vrsta aplikacije bo Spletna aplikacija.
- Nato dodajte URI-je za Pooblaščeni izvori JavaScripta in Pooblaščeni preusmeritveni URI-ji. Gostitelj vašega spletnega mesta bi moral biti izvor JavaScript, sistem pa bo po preverjanju pristnosti preusmeril uporabnike na preusmeritveni URI. URI za preusmeritev mora običajno vsebovati ime-gostitelja/accounts/google/login/callback/. Za razvojni način bo to: http://127.0.0.1:8000/accounts/google/login/callback/. Kliknite na USTVARJANJE ko je enkrat opravljeno.
- Ko ustvarite poverilnice, jih lahko kopirate ID stranke oz Skrivnost stranke na varno mesto ali jih prenesite kot datoteke JSON.
3. korak: dodajte ID odjemalca in skrivni ključ svoji aplikaciji Django
Ko ustvarite potrebne poverilnice, pojdite na http://127.0.0.1:8000/admin, izberite Socialne aplikacijein ustvarite novo družabno aplikacijo. Sledite tem korakom, da ustvarite novo družabno aplikacijo:
- Dodajte ponudnika. Ponudnik se nanaša na aplikacijo, s katero preverjate pristnost svojega uporabnika. V tem primeru je to Google, v drugem primeru pa je morda Snapchat.
- Vnesite ime za svojo novo družabno aplikacijo. Prepričajte se, da je razumno ime
- Prilepite v ID stranke ste kopirali iz Googla.
- Za Skrivni ključ, prilepite v Skrivnost stranke ste kopirali iz Googla.
- The Ključ polje ne velja za preverjanje pristnosti z Googlom, zato ga prezrite.
- Na koncu izberite spletno mesto, s katerim želite povezati družabno aplikacijo.
4. korak: preizkusite svojo Googlovo avtentikacijo
Odjavite se iz skrbniške plošče in se pomaknite do http://127.0.0.1:8000/accounts/login/. Videli boste možnost prijave prek Googla.
Kliknite nanjo, da se preusmerite na zaslon za soglasje. Nato izberite račun, s katerim se želite prijaviti.
Ko izberete račun, boste preusmerjeni na http://127.0.0.1:8000/accounts/profile/. To pomeni, da vaša aplikacija deluje brezhibno. Ustvarite lahko predloge po meri, ki bodo nadomestile privzete.
Izboljšanje registracije uporabnikov z družbeno avtentikacijo v Djangu
Omogočanje socialne avtentikacije je odličen način, da svojim uporabnikom pomagate do odlične izkušnje pri registraciji za vašo aplikacijo. Obstajajo še drugi načini za omogočanje avtentikacije v Djangu in raziščite jih, da se odločite, kaj je najboljše za vaš primer uporabe.