Kaip sukurti socialinio autentifikavimo sistemą Django naudojant OAuth

Kaip sukurti socialinio autentifikavimo sistemą 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 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.

Kaip atsisiųsti filmus į planšetinį kompiuterį

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ė.

  django administratoriaus skydelyje, kad pridėtumėte naują svetainę

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 .

  404 puslapis veikia Django DEBUG režimu, kuriame rodomas django-allauth galimų URL šablonų sąrašas

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.

naudojant nešiojamąjį kompiuterį kaip monitorių
  1. Eikite į Google Cloud konsolė sukurti naują projektą. Pirmiausia spustelėkite toliau pateiktame paveikslėlyje esantį išskleidžiamąjį meniu:   Pridėkite naujus „OAuth“ kredencialus prie savo administratoriaus skydelio
  2. Toliau spustelėkite NAUJAS PROJEKTAS :   Django-Allauth
  3. Įveskite projekto pavadinimą, tada spustelėkite KURTI mygtukas:   „Google“ sutikimo ekranas
  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 :
  1. 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 .
  2. Kairiajame meniu pasirinkite Įgaliojimai . Po to spustelėkite KURTI KREDENCIJUS ir pasirinkite „OAuth“ kliento ID .
  3. Tada pasirinkite Taikymo tipas ir įveskite to paties pavadinimą. Šioje mokymo programoje Taikymo tipas bus Žiniatinklio programa .
  4. 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ė.
  5. 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 programos ir 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.

 's default sign in page

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.