Aflați cum să creați un sistem de conectare securizat cu conturi de rețele sociale în Django folosind OAuth.

Autentificarea socială este o modalitate de a confirma identitatea unei persoane printr-un cont social în loc de a folosi parole. În dezvoltarea web, este întotdeauna util să autentificați utilizatorii fără parole. În acest fel, se pot conecta prin aplicații sociale precum Google, Twitter sau GitHub.

Activarea autentificării sociale este o modalitate excelentă de a îmbunătăți securitatea aplicației dvs. prin reducerea riscului de vulnerabilități comune legate de parole. De asemenea, va îmbunătăți experiența utilizatorului aplicației dvs., deoarece utilizatorii nu vor trebui să-și amintească multe parole.

Autentificarea utilizatorului în Django

Django oferă un sistem de autentificare implicit cu care să lucreze dezvoltatorii. Cu toate acestea, acest sistem de autentificare utilizează autentificarea tradițională, care implică colectarea manuală a datelor, cum ar fi numele de utilizator, e-mailul, parola, prenumele și numele utilizatorului.

instagram viewer

Prin proiectare, sistemul de autentificare Django este foarte generic și nu oferă multe caracteristici utilizate în majoritatea sistemelor de autentificare web de astăzi. Pentru a completa acest lucru, veți dori să utilizați pachete terțe, cum ar fi django-allauth pachet.

Cum să activați OAuth în Django

Pentru a vă autentifica utilizatorii folosind OAuth într-o aplicație Django, puteți utiliza un pachet Django numit django-allauth.

Django Allauth este un pachet care se ocupă de autentificare, înregistrare, gestionarea contului și autentificarea conturilor terțe (sociale) pentru proiectul dvs. Django. Următorii pași vă vor ghida către configurarea Django Allauth pentru proiectul dvs. Django.

Pasul 1: Instalați și configurați Django-Allauth

Dacă încă nu o faci, creați un mediu virtual și instalați django-allauth prin pip:

pip install django-allauth

Rețineți că trebuie să utilizați Python 3.5 sau o versiune ulterioară și Django 2.0 sau o versiune ulterioară pentru ca acesta să funcționeze.

Pasul 2: Adăugați aplicațiile necesare la Django pentru Django-Allauth

După instalare django-allauth, deschide-ți setări.py fișier și adăugați următoarele aplicații la dvs INSTALLED_APPS listă:

INSTALLED_APPS = [


Add your other apps here

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

Iată câteva puncte de reținut despre unele dintre aplicațiile de mai sus:

  • The allauth.socialaccount aplicația va permite utilizatorilor să se conecteze prin aplicații sociale, cum ar fi X (fostul Twitter), Instagram, GitHub și altele.
  • The django.contrib.sites aplicația este un cadru Django încorporat care este necesar pentru django-allauth a munci. Aplicația oferă posibilitatea de a gestiona și diferenția mai multe site-uri într-un singur proiect Django. Puteți înțelege cum funcționează, referindu-vă la Documentație Django.

Pasul 3: Definiți backend-urile de autentificare pentru proiectul dvs

Următorul pas este să definiți modul în care doriți să vă autentificați utilizatorii. Puteți face acest lucru configurând AUTHENTICATION_BACKENDS în dumneavoastră setări.py fişier. Pentru django-allauth, ar trebui să adăugați acestea:

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

Fragmentul de cod de mai sus definește două backend-uri de autentificare:

  1. Prima este cea implicită folosită de Django. Acest lucru va permite utilizatorului administrator să se conecteze la panoul de administrare, indiferent de configurația lui django-allauth.
  2. Al doilea definește backend-ul de autentificare pentru django-allauth.

Pasul 4: Adăugați ID-ul site-ului dvs

În fișierul de setări, ar trebui să adăugați ID-ul site-ului dvs. Iată un exemplu:

SITE_ID = 1

În mod implicit, există un site numit exemplu.com în panoul de administrare. Puteți decide să modificați acest site sau să adăugați unul pentru dvs. În ambele cazuri, ar trebui să vă conectați la panoul de administrare și să navigați la Site-uri aplicația.

Pentru a obține ID-ul site-ului pentru un site Django, deschideți-vă Interfață de linie de comandă (CLI) și rulați această comandă:

python manage.py shell

Apoi, scrieți acest script în shell-ul 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)

Codul de mai sus va tipări numele site-ului, precum și ID-ul acestuia.

Pasul 5: Configurați adresele URL

În proiectul tău urls.py fișier, configurați modelul URL pentru django-allauth. Cam așa ar trebui să arate:

from django.urls import path, include

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

Cu această configurare, puteți porni serverul de dezvoltare și puteți naviga la http://127.0.0.1:8000/accounts/. Daca ai DEBUG setat la Adevărat, ar trebui să vedeți o listă de modele URL disponibile pentru django-allauth.

Dacă ați făcut cele de mai sus, proiectul dvs. ar trebui să fie gata pentru autentificare socială.

Cum să implementați Login/Signup Google în aplicația dvs. Django

După configurare django-allauth, ar trebui să fiți gata să permiteți utilizatorilor să se autentifice cu conturile lor sociale, cum ar fi Google.

Pasul 1: Înregistrați furnizorul dvs. de cont social în aplicațiile dvs. instalate

În dumneavoastră setări.py fișier, ar trebui să adăugați furnizorul contului social în INSTALLED_APPS. În acest caz, este Google. Alte opțiuni sunt Instagram, X etc.

INSTALLED_APPS = [


Add your other apps here

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

Pasul 2: creați-vă ID-ul de client și cheia secretă pe Google

Pentru a finaliza acest pas, trebuie să aveți un cont Google creat. Dacă ați făcut acest lucru, urmați următorii pași:

  1. Îndreptați-vă spre Consola Google Cloud pentru a crea un nou proiect. Mai întâi, faceți clic pe meniul drop-down din imaginea de mai jos:
  2. Apoi, faceți clic pe PROIECT NOU:
  3. Introduceți un nume pentru proiectul dvs., apoi faceți clic pe CREA buton:
  4. Cu proiectul dvs. selectat, faceți clic pe meniul de hamburgeri. Selectați API-uri și servicii, apoi Acreditări:
  5. Apoi, faceți clic pe opțiunea care spune CONFIGURAȚI ECRANUL DE CONsimțământ și selectați Extern:
  6. Pe pagina următoare, introduceți un nume pentru aplicația dvs. și includeți un e-mail acolo unde este necesar. De asemenea, puteți explora configurațiile pentru anumite personalizări. Odată terminat, faceți clic pe SALVEAZA SI CONTINUA.
  7. În meniul din stânga, selectați Acreditări. După aceea, faceți clic pe CREAȚI CREDENTIALĂ și selectați ID-ul clientului OAuth.
  8. Apoi, selectați Tip aplicație și introduceți un nume pentru același. Pentru acest tutorial, Tip aplicație va fi aplicatie web.
  9. Apoi, adăugați URI-uri pentru Origini JavaScript autorizate și URI de redirecționare autorizate. Gazda site-ului dvs. ar trebui să fie originile JavaScript, iar sistemul va redirecționa utilizatorii către URI-ul de redirecționare după autentificare. URI-ul de redirecționare ar trebui să conțină de obicei numele-gazdă/accounts/google/login/callback/. Pentru modul de dezvoltare, va fi: http://127.0.0.1:8000/accounts/google/login/callback/. Click pe CREA când odată terminat.
  10. După crearea acreditărilor, vă puteți copia ID client sau Secretul clientului într-un loc sigur sau descărcați-le ca fișiere JSON.

Pasul 3: Adăugați ID-ul dvs. de client și cheia secretă la aplicația Django

După ce ați creat acreditările necesare, navigați la http://127.0.0.1:8000/admin, Selectați Aplicații socialeși creați o nouă aplicație socială. Urmați acești pași pentru a crea o nouă aplicație socială:

  1. Adăugați un furnizor. Furnizorul se referă la aplicația cu care vă autentificați utilizatorul. În acest caz, este Google, în alt caz, ar putea fi Snapchat.
  2. Introduceți un nume pentru noua aplicație socială. Asigurați-vă că este un nume rezonabil
  3. Lipiți în ID client ai copiat de pe Google.
  4. Pentru Cheie secreta, lipiți în Secretul clientului ai copiat de pe Google.
  5. The Cheie câmpul nu se aplică pentru autentificarea cu Google, așa că ignorați-l.
  6. În cele din urmă, selectați un site cu care să asociați aplicația socială.

Pasul 4: Testează-ți autentificarea Google

Deconectați-vă de la panoul de administrare și navigați la http://127.0.0.1:8000/accounts/login/. Veți vedea o opțiune de conectare prin Google.

Faceți clic pe el pentru a redirecționa către ecranul de consimțământ. Apoi, selectați un cont cu care să vă conectați.

După ce ați selectat un cont, veți fi redirecționat către http://127.0.0.1:8000/accounts/profile/. Aceasta înseamnă că aplicația dvs. funcționează perfect. Puteți crea șabloane personalizate pentru a le înlocui pe cele implicite.

Îmbunătățirea înregistrării utilizatorilor cu autentificare socială în Django

Activarea autentificării sociale este o modalitate excelentă de a vă ajuta utilizatorii să aibă o experiență grozavă de înregistrare pentru aplicația dvs. Există și alte modalități de a activa autentificarea în Django și ar trebui să le explorați pentru a decide ce este mai potrivit pentru cazul dvs. de utilizare.