Научете как да създадете защитена система за влизане с акаунти в социални медии в Django, използвайки OAuth.

Социалното удостоверяване е начин за потвърждаване на самоличността на човек чрез социален акаунт, вместо да използвате пароли. В уеб разработката винаги е полезно да се удостоверяват потребители без пароли. По този начин те могат да влизат чрез социални приложения като Google, Twitter или GitHub.

Активирането на социално удостоверяване е чудесен начин да подобрите сигурността на вашето приложение чрез намаляване на риска от често срещани уязвимости, свързани с пароли. Това също ще подобри потребителското изживяване на вашето приложение, тъй като потребителите няма да трябва да запомнят много пароли.

Удостоверяване на потребителя в Django

Django предоставя система за удостоверяване по подразбиране, с която разработчиците да работят. Тази система за удостоверяване обаче използва традиционно удостоверяване, което включва ръчно събиране на данни като потребителско име, имейл, парола, собствено име и фамилия на потребителя.

instagram viewer

По дизайн системата за удостоверяване на Django е много обща и не предоставя много функции, използвани в повечето системи за уеб удостоверяване днес. За да допълните това, ще искате да използвате пакети на трети страни като django-allauth пакет.

Как да активирате OAuth в Django

За да удостоверите вашите потребители с помощта на OAuth в приложение на Django, можете да използвате пакет на Django, наречен django-allauth.

Django Allauth е пакет, който обработва удостоверяване, регистрация, управление на акаунти и удостоверяване на трети (социални) акаунти за вашия Django проект. Следните стъпки ще ви насочат към настройка на Django Allauth за вашия Django проект.

Стъпка 1: Инсталирайте и настройте Django-Allauth

Ако тепърва ще го правите, създайте виртуална среда и инсталирайте django-allauth чрез pip:

pip install django-allauth

Обърнете внимание, че трябва да използвате Python 3.5 или по-нова версия и Django 2.0 или по-нова версия, за да работи.

Стъпка 2: Добавете необходимите приложения към Django за Django-Allauth

След инсталиране django-allauth, отвори си settings.py файл и добавете следните приложения към вашия INSTALLED_APPS списък:

INSTALLED_APPS = [


Add your other apps here

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

Ето някои неща, които трябва да отбележите относно някои от горните приложения:

  • The allauth.socialaccount приложението ще позволи на потребителите да влизат чрез социални приложения като X (по-рано Twitter), Instagram, GitHub и други.
  • The django.contrib.sites е вградена рамка на Django, която е необходима за django-allauth да работиш. Приложението предоставя възможност за управление и разграничаване на множество сайтове в рамките на един проект на Django. Можете да разберете как работи, като се обърнете към Документация на Django.

Стъпка 3: Дефинирайте бекенда за удостоверяване за вашия проект

Следващата стъпка е да определите как искате да удостоверявате вашите потребители. Можете да направите това, като конфигурирате AUTHENTICATION_BACKENDS във вашия settings.py файл. За django-allauth, трябва да добавите тези:

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

Кодовият фрагмент по-горе дефинира два бекенда за удостоверяване:

  1. Първият е стандартният, използван от Django. Това ще позволи на администраторския потребител да влезе в административния панел, независимо от конфигурацията на django-allauth.
  2. Вторият дефинира бекенда за удостоверяване django-allauth.

Стъпка 4: Добавете ID на вашия сайт

Във вашия файл с настройки трябва да добавите ID за вашия сайт. Ето един пример:

SITE_ID = 1

По подразбиране има сайт, наречен example.com в админ панела. Можете да решите да промените този сайт или да добавите такъв за себе си. И в двата случая трябва да влезете в административния панел и да отидете до сайтове ап.

За да получите идентификатора на сайта за сайт на Django, отворете своя Интерфейс на командния ред (CLI) и изпълнете тази команда:

python manage.py shell

След това напишете този скрипт в обвивката на 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)

Горният код ще отпечата името на сайта, както и неговия идентификатор.

Стъпка 5: Конфигурирайте вашите URL адреси

Във вашия проект urls.py файл, конфигурирайте URL модела за django-allauth. Ето как трябва да изглежда:

from django.urls import path, include

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

С тази настройка можете да стартирате своя сървър за разработка и да отидете до http://127.0.0.1:8000/accounts/. Ако имате ОТСТРАНЯВАНЕ НА ГРЕШКИ настроен на Вярно, трябва да видите списък с налични URL модели за django-allauth.

Ако сте направили горното, вашият проект трябва да е готов за социално удостоверяване.

Как да внедрите вход/регистрация в Google във вашето приложение Django

След настройката django-allauth, трябва да сте готови да позволите на вашите потребители да се удостоверяват с техните социални акаунти като Google.

Стъпка 1: Регистрирайте вашия доставчик на социални акаунти в инсталираните ви приложения

Във вашия settings.py файл, трябва да добавите доставчика на социален акаунт INSTALLED_APPS. В случая това е Google. Други опции са Instagram, X и др.

INSTALLED_APPS = [


Add your other apps here

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

Стъпка 2: Създайте своя клиентски идентификатор и таен ключ в Google

За да завършите тази стъпка, трябва да имате създаден акаунт в Google. Ако сте го направили, изпълнете следните стъпки:

  1. Насочете се към Google Cloud конзола за създаване на нов проект. Първо щракнете върху падащото меню, показано на изображението по-долу:
  2. След това щракнете върху НОВ ПРОЕКТ:
  3. Въведете име за вашия проект, след което щракнете върху СЪЗДАВАЙТЕ бутон:
  4. С избрания от вас проект щракнете върху менюто за хамбургери. Изберете API и услуги, тогава Акредитивни писма:
  5. След това щракнете върху опцията, която казва КОНФИГУРИРАЙТЕ ЕКРАНА ЗА СЪГЛАСИЕ и изберете Външен:
  6. На следващата страница въведете име за вашето приложение и включете имейл, където е необходимо. Можете също така да разгледате конфигурациите за някои персонализации. След като сте готови, щракнете върху ЗАПАЗИ И ПРОДЪЛЖИ.
  7. В менюто отляво изберете Акредитивни писма. След това щракнете върху СЪЗДАВАЙТЕ ИДЕНТИФИКАЦИИ и изберете OAuth клиентски идентификатор.
  8. След това изберете Тип приложение и въведете име за същото. За този урок, Тип приложение ще бъде Уеб приложение.
  9. След това добавете URI за Оторизирани източници на JavaScript и Оторизирани URI адреси за пренасочване. Хостът на вашия уебсайт трябва да бъде източникът на JavaScript и системата ще пренасочи потребителите към URI адреса за пренасочване след удостоверяване. URI адресът за пренасочване обикновено трябва да съдържа your-host-name/accounts/google/login/callback/. За режим на разработка ще бъде: http://127.0.0.1:8000/accounts/google/login/callback/. Кликнете върху СЪЗДАВАЙТЕ когато веднъж е направено.
  10. След като създадете идентификационните данни, можете да копирате вашите ID на клиента или Тайна на клиента на безопасно място или ги изтеглете като JSON файлове.

Стъпка 3: Добавете своя клиентски идентификатор и таен ключ към вашето приложение Django

След като създадете необходимите идентификационни данни, отидете до http://127.0.0.1:8000/admin, изберете Социални приложенияи създайте ново социално приложение. Следвайте тези стъпки, за да създадете ново социално приложение:

  1. Добавяне на доставчик. Доставчикът се отнася до приложението, с което удостоверявате своя потребител. В този случай това е Google, в друг случай може да е Snapchat.
  2. Въведете име за вашето ново социално приложение. Уверете се, че това е разумно име
  3. Поставете в ID на клиента сте копирали от Google.
  4. За Таен ключ, поставете в Тайна на клиента сте копирали от Google.
  5. The Ключ полето не се прилага за удостоверяване с Google, така че го игнорирайте.
  6. Накрая изберете сайт, с който да свържете социалното приложение.

Стъпка 4: Тествайте вашето Google удостоверяване

Излезте от администраторския си панел и отидете до http://127.0.0.1:8000/accounts/login/. Ще видите опция за влизане през Google.

Кликнете върху него, за да пренасочите към екрана за съгласие. След това изберете акаунт, с който да влезете.

След като изберете акаунт, ще бъдете пренасочени към http://127.0.0.1:8000/accounts/profile/. Това означава, че приложението ви работи перфектно. Можете да създадете персонализирани шаблони, за да замените тези по подразбиране.

Подобряване на потребителската регистрация със социално удостоверяване в Django

Активирането на социално удостоверяване е чудесен начин да помогнете на вашите потребители да се регистрират за вашето приложение. Има и други начини за активиране на удостоверяване в Django и трябва да ги проучите, за да решите кой е най-добрият за вашия случай на употреба.