Uzziniet, kā izveidot drošu pieteikšanās sistēmu ar sociālo mediju kontiem pakalpojumā Django, izmantojot OAuth.
Sociālā autentifikācija ir veids, kā apstiprināt personas identitāti, izmantojot sociālo kontu, nevis izmantojot paroles. Tīmekļa izstrādē vienmēr ir noderīgi autentificēt lietotājus bez parolēm. Tādā veidā viņi var pieteikties, izmantojot tādas sociālās lietotnes kā Google, Twitter vai GitHub.
Sociālās autentifikācijas iespējošana ir lielisks veids, kā uzlabot lietojumprogrammas drošību, samazinot ar paroli saistītu ievainojamību risku. Tas arī uzlabos jūsu lietotnes lietošanas pieredzi, jo lietotājiem nebūs jāatceras daudzas paroles.
Lietotāja autentifikācija pakalpojumā Django
Django nodrošina noklusējuma autentifikācijas sistēmu, ar kuru izstrādātāji var strādāt. Tomēr šī autentifikācijas sistēma izmanto tradicionālo autentifikāciju, kas ietver tādu datu manuālu vākšanu kā lietotāja lietotājvārds, e-pasts, parole, vārds un uzvārds.
Pēc konstrukcijas Django autentifikācijas sistēma ir ļoti vispārīga un nenodrošina daudzas funkcijas, ko mūsdienās izmanto lielākajā daļā tīmekļa autentifikācijas sistēmu. Lai to papildinātu, vēlēsities izmantot trešo pušu pakotnes, piemēram,
django-allauth iepakojums.Kā iespējot OAuth pakalpojumā Django
Lai autentificētu savus lietotājus, izmantojot OAuth Django lietojumprogrammā, varat izmantot Django pakotni ar nosaukumu django-allauth.
Django Allauth ir pakotne, kas apstrādā jūsu Django projekta autentifikāciju, reģistrāciju, konta pārvaldību un trešās puses (sociālā) konta autentifikāciju. Tālāk norādītās darbības palīdzēs jums iestatīt Django Allauth savam Django projektam.
1. darbība. Instalējiet un iestatiet Django-Allauth
Ja jums tas vēl jāizdara, izveidot virtuālo vidi un instalēt django-allauth caur pip:
pip install django-allauth
Ņemiet vērā, ka jums ir jāizmanto Python 3.5 vai jaunāka versija un Django 2.0 vai jaunāka versija, lai tā darbotos.
2. darbība. Pievienojiet vajadzīgās lietotnes pakalpojumam Django for Django-Allauth
Pēc instalēšanas django-allauth, atver savu settings.py failu un pievienojiet tālāk norādītās lietotnes INSTALLED_APPS saraksts:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Šeit ir daži punkti, kas jāņem vērā saistībā ar dažām iepriekš minētajām lietotnēm.
- The allauth.socialaccount lietotne ļaus lietotājiem pierakstīties, izmantojot tādas sociālās lietotnes kā X (iepriekš Twitter), Instagram, GitHub un citas.
- The django.contrib.sites lietotne ir iebūvēta Django sistēma, kas nepieciešama django-allauth strādāt. Lietotne nodrošina iespēju pārvaldīt un atšķirt vairākas vietnes vienā Django projektā. Jūs varat saprast, kā tas darbojas, atsaucoties uz Django dokumentācija.
3. darbība: definējiet sava projekta autentifikācijas aizmugursistēmas
Nākamais solis ir noteikt, kā vēlaties autentificēt savus lietotājus. To var izdarīt, konfigurējot AUTHENTICATION_BACKENDS tavā settings.py failu. Priekš django-allauth, jums vajadzētu pievienot šos:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Iepriekš minētais koda fragments definē divas autentifikācijas aizmugursistēmas:
- Pirmais ir noklusējuma, ko izmanto Django. Tas ļaus administratoram lietotājam pieteikties administratora panelī neatkarīgi no django-allauth konfigurācijas.
- Otrais definē autentifikācijas aizmugursistēmu django-allauth.
4. darbība. Pievienojiet savas vietnes ID
Iestatījumu failā ir jāpievieno savas vietnes ID. Šeit ir piemērs:
SITE_ID = 1
Pēc noklusējuma ir vietne ar nosaukumu example.com admin panelī. Varat izlemt mainīt šo vietni vai pievienot to sev. Jebkurā gadījumā jums vajadzētu pieteikties administratora panelī un doties uz Vietnes lietotne.
Lai iegūtu Django vietnes ID, atveriet savu Komandrindas interfeiss (CLI) un palaidiet šo komandu:
python manage.py shell
Pēc tam ierakstiet šo skriptu Python apvalkā:
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)
Iepriekš minētais kods izdrukās vietnes nosaukumu, kā arī tās ID.
5. darbība: konfigurējiet savus URL
Jūsu projektā urls.py failu, konfigurējiet URL modeli django-allauth. Lūk, kā tam vajadzētu izskatīties:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Izmantojot šo iestatījumu, varat palaist izstrādes serveri un pāriet uz to http://127.0.0.1:8000/accounts/. Ja Jums ir ATKLĀŠANA iestatīts uz Taisnība, jums vajadzētu redzēt pieejamo URL modeļu sarakstu django-allauth.
Ja esat veicis iepriekš minēto, jūsu projektam jābūt gatavam sociālajai autentifikācijai.
Kā ieviest Google pieteikšanos/reģistrēšanos savā Django lietotnē
Pēc iestatīšanas django-allauth, jums jābūt gatavam ļaut saviem lietotājiem autentificēt sevi, izmantojot savus sociālos kontus, piemēram, Google.
1. darbība: reģistrējiet sava sociālā konta nodrošinātāju instalētajās lietotnēs
Tavā settings.py failu, jums jāpievieno sociālā konta nodrošinātājs INSTALLED_APPS. Šajā gadījumā tas ir Google. Citas iespējas ir Instagram, X utt.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
2. darbība. Izveidojiet savu klienta ID un slepeno atslēgu Google tīklā
Lai pabeigtu šo darbību, ir jāizveido Google konts. Ja esat to izdarījis, veiciet tālāk norādītās darbības.
- Dodieties uz Google mākoņa konsole lai izveidotu jaunu projektu. Vispirms noklikšķiniet uz nolaižamās izvēlnes, kas parādīta zemāk esošajā attēlā:
- Tālāk noklikšķiniet uz JAUNS PROJEKTS:
- Ievadiet sava projekta nosaukumu un pēc tam noklikšķiniet uz IZVEIDOT poga:
- Kad projekts ir atlasīts, noklikšķiniet uz hamburgeru ēdienkarte. Izvēlieties API un pakalpojumi, tad Akreditācijas dati:
- Pēc tam noklikšķiniet uz opcijas, kas saka KONFIGŪRĒT PIEKRĪŠANAS EKRĀNU un atlasiet Ārējais:
- Nākamajā lapā ievadiet savas lietotnes nosaukumu un, ja nepieciešams, iekļaujiet e-pasta adresi. Varat arī izpētīt konfigurācijas, lai veiktu pielāgošanu. Kad tas ir izdarīts, noklikšķiniet uz SAGLABĀT UN TURPINĀT.
- Kreisās puses izvēlnē atlasiet Akreditācijas dati. Pēc tam noklikšķiniet uz IZVEIDOT Akreditācijas datus un atlasiet OAuth klienta ID.
- Pēc tam atlasiet Pieteikuma veids un ievadiet tam pašam nosaukumu. Šai apmācībai Pieteikuma veids būs Tīmekļa lietojumprogramma.
- Pēc tam pievienojiet URI Autorizēta JavaScript izcelsme un Autorizētie novirzīšanas URI. Jūsu vietnes saimniekdatoram ir jābūt JavaScript izcelsmei, un sistēma pēc autentifikācijas novirzīs lietotājus uz novirzīšanas URI. Pāradresācijas URI parasti ir jāietver jūsu resursdatora nosaukums/accounts/google/login/callback/. Attīstības režīmam tas būs: http://127.0.0.1:8000/accounts/google/login/callback/. Klikšķiniet uz IZVEIDOT kad reiz izdarīts.
- Pēc akreditācijas datu izveides varat kopēt savus Klienta ID vai Klienta noslēpums drošā vietā vai lejupielādējiet tos kā JSON failus.
3. darbība: pievienojiet savu klienta ID un slepeno atslēgu savai Django lietotnei
Kad esat izveidojis nepieciešamos akreditācijas datus, dodieties uz http://127.0.0.1:8000/admin, atlasiet Sociālās lietojumprogrammasun izveidojiet jaunu sociālo lietojumprogrammu. Veiciet šīs darbības, lai izveidotu jaunu sociālo lietotni:
- Pievienojiet pakalpojumu sniedzēju. Pakalpojumu sniedzējs attiecas uz lietotni, ar kuru autentificējat savu lietotāju. Šajā gadījumā tas ir Google, citā gadījumā tas varētu būt Snapchat.
- Ievadiet savas jaunās sociālās lietotnes nosaukumu. Pārliecinieties, vai tas ir saprātīgs nosaukums
- Ielīmējiet Klienta ID jūs nokopējāt no Google.
- Priekš Slepenā atslēga, ielīmējiet Klienta noslēpums jūs nokopējāt no Google.
- The Atslēga lauks neattiecas uz autentifikāciju ar Google, tāpēc ignorējiet to.
- Visbeidzot atlasiet vietni, ar kuru saistīt sociālo lietojumprogrammu.
4. darbība: pārbaudiet savu Google autentifikāciju
Izrakstieties no administratora paneļa un dodieties uz http://127.0.0.1:8000/accounts/login/. Jūs redzēsit iespēju pieteikties, izmantojot Google.
Noklikšķiniet uz tā, lai novirzītu uz piekrišanas ekrānu. Pēc tam atlasiet kontu, ar kuru pieteikties.
Kad esat atlasījis kontu, jūs tiksit novirzīts uz http://127.0.0.1:8000/accounts/profile/. Tas nozīmē, ka jūsu lietotne darbojas nevainojami. Varat izveidot pielāgotas veidnes, lai aizstātu noklusējuma veidnes.
Lietotāju reģistrācijas uzlabošana, izmantojot sociālo autentifikāciju pakalpojumā Django
Sociālās autentifikācijas iespējošana ir lielisks veids, kā palīdzēt lietotājiem gūt lielisku pieredzi, reģistrējoties jūsu lietojumprogrammai. Ir arī citi veidi, kā iespējot autentifikāciju pakalpojumā Django, un jums tie ir jāizpēta, lai izlemtu, kas ir vislabākais jūsu lietošanas gadījumam.