Sužinokite, kaip sukurti saugią prisijungimo sistemą su socialinės žiniasklaidos paskyromis Django naudojant OAuth.

Socialinis autentifikavimas yra būdas patvirtinti asmens tapatybę per socialinę paskyrą, o ne naudojant slaptažodžius. Kuriant internetą, visada naudinga autentifikuoti vartotojus be slaptažodžių. Tokiu būdu jie gali prisijungti per socialines programas, tokias kaip „Google“, „Twitter“ ar „GitHub“.

Socialinio autentifikavimo įgalinimas yra puikus būdas padidinti programos saugumą sumažinant įprastų su slaptažodžiu susijusių spragų riziką. Tai taip pat pagerins jūsų programos naudotojų patirtį, nes vartotojams nereikės atsiminti daug slaptažodžių.

Vartotojo autentifikavimas „Django“.

„Django“ teikia numatytąją autentifikavimo sistemą, su kuria kūrėjai gali dirbti. Tačiau ši autentifikavimo sistema naudoja tradicinį autentifikavimą, kuris apima rankinį duomenų, tokių kaip vartotojo vardas, el. pašto adresas, slaptažodis, vardas ir pavardė, rinkimą.

Pagal dizainą Django autentifikavimo sistema yra labai bendra ir nesuteikia daug funkcijų, naudojamų daugelyje žiniatinklio autentifikavimo sistemų šiandien. Norėdami tai papildyti, norėsite naudoti trečiųjų šalių paketus, tokius kaip

instagram viewer
django-allauth paketą.

Kaip „Django“ įjungti „OAuth“.

Norėdami autentifikuoti savo vartotojus naudodami OAuth Django programoje, galite naudoti Django paketą, vadinamą django-allauth.

Django Allauth yra paketas, kuris tvarko jūsų Django projekto autentifikavimą, registraciją, paskyros valdymą ir trečiosios šalies (socialinės) paskyros autentifikavimą. Šie veiksmai padės jums nustatyti „Django Allauth“ savo „Django“ projektui.

1 veiksmas: įdiekite ir nustatykite „Django-Allauth“.

Jei dar to nepadarysite, sukurti virtualią aplinką ir įdiegti django-allauth per pip:

pip install django-allauth

Atminkite, kad turite naudoti Python 3.5 ar naujesnę versiją ir Django 2.0 ar naujesnę versiją, kad ji veiktų.

2 veiksmas: pridėkite reikiamas programas prie „Django for Django-Allauth“.

Po įdiegimo django-allauth, Atidaryk savo settings.py failą ir prie savo pridėkite šias programas INSTALLED_APPS sąrašas:

INSTALLED_APPS = [


Add your other apps here

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

Štai keletas punktų, į kuriuos reikia atkreipti dėmesį kai kurios iš pirmiau nurodytų programų:

  • The allauth.socialaccount programa leis vartotojams prisijungti per socialines programas, tokias kaip X (anksčiau Twitter), Instagram, GitHub ir kt.
  • The django.contrib.sites programa yra integruota Django sistema, kuri reikalinga django-allauth dirbti. Programėlė suteikia galimybę valdyti ir atskirti kelias svetaines viename Django projekte. Galite suprasti, kaip tai veikia, remdamiesi Django dokumentacija.

3 veiksmas: apibrėžkite savo projekto autentifikavimo pagrindines programas

Kitas žingsnis yra apibrėžti, kaip norite autentifikuoti savo vartotojus. Tai galite padaryti sukonfigūruodami AUTHENTICATION_BACKENDS tavo settings.py failą. Dėl django-allauth, turėtumėte pridėti šiuos dalykus:

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

Aukščiau pateiktas kodo fragmentas apibrėžia dvi autentifikavimo pagrindines programas:

  1. Pirmasis yra numatytasis, kurį naudoja Django. Tai leis administratoriaus vartotojui prisijungti prie administratoriaus skydelio, neatsižvelgiant į django-allauth konfigūraciją.
  2. Antrasis apibrėžia autentifikavimo užpakalinę programą django-allauth.

4 veiksmas: pridėkite savo svetainės ID

Nustatymų faile turėtumėte pridėti savo svetainės ID. Štai pavyzdys:

SITE_ID = 1

Pagal numatytuosius nustatymus yra svetainė, vadinama example.com administratoriaus skydelyje. Galite nuspręsti pakeisti šią svetainę arba pridėti ją sau. Bet kuriuo atveju turite prisijungti prie administratoriaus skydelio ir pereiti prie Svetainės programėlė.

Norėdami gauti Django svetainės ID, atidarykite savo Komandinės eilutės sąsaja (CLI) ir paleiskite šią komandą:

python manage.py shell

Tada parašykite šį scenarijų į Python apvalkalą:

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)

Aukščiau pateiktas kodas atspausdins svetainės pavadinimą ir jos ID.

5 veiksmas: sukonfigūruokite savo URL

Jūsų projekte urls.py failą, sukonfigūruokite URL šabloną django-allauth. Štai kaip tai turėtų atrodyti:

from django.urls import path, include

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

Naudodami šią sąranką galite paleisti kūrimo serverį ir pereiti prie http://127.0.0.1:8000/accounts/. Jei turite DERINTI nustatytas į Tiesa, turėtumėte matyti galimų URL šablonų sąrašą django-allauth.

Jei atlikote aukščiau nurodytus veiksmus, jūsų projektas turėtų būti paruoštas socialiniam autentifikavimui.

Kaip įdiegti „Google“ prisijungimą / prisiregistravimą „Django“ programoje

Nustačius django-allauth, turėtumėte būti pasirengę leisti naudotojams autentifikuoti save naudodami savo socialines paskyras, pvz., „Google“.

1 veiksmas: užregistruokite savo socialinės paskyros teikėją įdiegtose programose

Jūsų settings.py failą, turėtumėte pridėti socialinės paskyros teikėją INSTALLED_APPS. Šiuo atveju tai yra Google. Kitos parinktys yra „Instagram“, „X“ ir kt.

INSTALLED_APPS = [


Add your other apps here

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

2 veiksmas: sukurkite savo kliento ID ir slaptąjį raktą sistemoje „Google“.

Norėdami atlikti šį veiksmą, turite sukurti „Google“ paskyrą. Jei tai padarėte, atlikite toliau nurodytus veiksmus.

  1. Eikite į Google Cloud konsolė sukurti naują projektą. Pirmiausia spustelėkite toliau pateiktame paveikslėlyje esantį išskleidžiamąjį meniu:
  2. Toliau spustelėkite NAUJAS PROJEKTAS:
  3. Įveskite projekto pavadinimą, tada spustelėkite KURTI mygtukas:
  4. Pasirinkę projektą spustelėkite mėsainių meniu. Pasirinkite API ir paslaugos, tada Įgaliojimai:
  5. Tada spustelėkite parinktį, kuri sakoma KONFIGŪRUOKITE SUTIKIMO EKRANO ir pasirinkite Išorinis:
  6. Kitame puslapyje įveskite programos pavadinimą ir prireikus įtraukite el. pašto adresą. Taip pat galite ištirti konfigūracijas, kad galėtumėte tinkinti. Baigę spustelėkite IŠSAUGOTI IR TĘSTI.
  7. Kairiajame meniu pasirinkite Įgaliojimai. Po to spustelėkite KURTI KREDENCIJUS ir pasirinkite „OAuth“ kliento ID.
  8. Tada pasirinkite Taikymo tipas ir įveskite to paties pavadinimą. Šioje mokymo programoje Taikymo tipas bus Žiniatinklio programa.
  9. Tada pridėkite URI Įgaliota JavaScript kilmė ir Įgalioti peradresavimo URI. Jūsų svetainės priegloba turėtų būti „JavaScript“ šaltiniai, o sistema peradresuos naudotojus į peradresavimo URI po autentifikavimo. Peradresavimo URI paprastai turėtų būti jūsų-host-name/accounts/google/login/callback/. Kūrimo režimui tai bus: http://127.0.0.1:8000/accounts/google/login/callback/. Spustelėkite KURTI kai vieną kartą padarė.
  10. Sukūrę kredencialus, galite nukopijuoti savo Kliento ID arba Kliento paslaptis į saugią vietą arba atsisiųskite juos kaip JSON failus.

3 veiksmas: pridėkite savo kliento ID ir slaptąjį raktą prie „Django“ programos

Sukūrę reikiamus kredencialus, eikite į http://127.0.0.1:8000/admin, pasirinkite Socialinės programosir sukurti naują socialinę programą. Norėdami sukurti naują socialinę programą, atlikite šiuos veiksmus:

  1. Pridėkite teikėją. Teikėjas nurodo programą, kuria autentifikuojate savo naudotoją. Šiuo atveju tai yra „Google“, kitu atveju tai gali būti „Snapchat“.
  2. Įveskite naujos socialinės programos pavadinimą. Įsitikinkite, kad tai pagrįstas pavadinimas
  3. Įklijuokite į Kliento ID nukopijavote iš Google.
  4. Slaptas raktas, įklijuokite į Kliento paslaptis nukopijavote iš Google.
  5. The Raktas laukas netaikomas autentifikavimui naudojant „Google“, todėl nepaisykite jo.
  6. Galiausiai pasirinkite svetainę, su kuria susiesite socialinę programą.

4 veiksmas: patikrinkite „Google“ autentifikavimą

Atsijunkite nuo administratoriaus skydelio ir eikite į http://127.0.0.1:8000/accounts/login/. Pamatysite parinktį prisijungti per Google.

Spustelėkite jį, kad nukreiptumėte į sutikimo ekraną. Tada pasirinkite paskyrą, su kuria norite prisijungti.

Pasirinkę paskyrą būsite nukreipti į http://127.0.0.1:8000/accounts/profile/. Tai reiškia, kad jūsų programa veikia puikiai. Galite sukurti pasirinktinius šablonus, kurie pakeis numatytuosius.

Vartotojų registracijos tobulinimas naudojant socialinį autentifikavimą „Django“.

Socialinio autentifikavimo įgalinimas yra puikus būdas padėti naudotojams naudotis puikia registravimosi į jūsų programą patirtį. Yra ir kitų būdų, kaip įgalinti autentifikavimą „Django“, ir turėtumėte juos ištirti, kad nuspręstumėte, kas geriausiai tinka jūsų naudojimo atveju.