Создание web-сервиса. Всё, но не сразу. Делаем авторизацию в Django.
Одной из важной составляющей любого проекта - это регистрация, авторизация и аутентификация.
Авторизация - это получение "полномочий" на выполнение некоторых действий (чтение, запись, удаления).
Аутентификация - проверка подлинности по введённым данным.
В Django это тоже реализовано не плохо. Данная процедура будет происходить через получения токенов.
Токены - набор символов для идентификации владельца и получения безопасного доступа.
Для этого нам потребуется пакет django-rest-framework-jwt.
Для его установки нам потребуется активировать виртуальное окружение и выполнить команду
pip3 install djangorestframework-jwt
Добавим словарь со следующим содержимом:
REST_FRAMEWORK = {
\\Согласно документации, это глобально установленная политика разрешений.
'DEFAULT_PERMISSION_CLASSES': (
\\Указываем класс для аутентификации 'rest_framework.permissions.IsAuthenticated',
),
\\Список или кортеж классов аутентификации, который определяет набор средств, используемых при обращении к запросу.
'DEFAULT_AUTHENTICATION_CLASSES': (
# 'rest_framework.authentication.SessionAuthentication',
# 'rest_framework.authentication.BasicAuthentication',
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
)
}
Затем:
//Указываем время действия аутентификации
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=14)
}
Теперь последний этап - настройка urls.py
Открываем файл и добавим следующую строку:
//при обращении к url '/token' должны получать ключ, который нам выдаст класс obtain_jwt_token
url(r'token', obtain_jwt_token),
Но чтобы он работал надо сначала импортировать его:
from rest_framework_jwt.views import obtain_jwt_token
Чтобы проверить, что всё настроено правильно - нам необходимо создать суперпользователя.
Используем команду:
python3 manage.py createsuperuser
И вводим username и password.
После открываем консоль и вводим команду
curl -X POST -d "username=login&password=password" http://localhost:8000/token
В итоге получим ответ вида:
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTA2MDE0OTEsInVzZXJfaWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluaW5zdHJhdG9yQGF2YXNpdGVzLnJ1In0.oGescnBjA9fkWybJWeYQfyR-N0REG52p70DEhPXhWcc"}
Сегодня мы научились получать токены, для авторизации. Дальше будем работать с фронтенд частью.
Полный листинг файлов, с которыми мы работали:
Файл settings.py
Файл urls.py
Данный пост подготовлен автором @zheev. В рамках данного цикла статей он расскажет о том, что и как он программировал, какие языки и технологии использовал. С какими трудностями пришлось столкнуться и их решение на реальных примерах.
Первая часть - Вступление
Вторая часть - Проектирование БД
Третья часть - Установка окружения
Четвёртая часть - Установка и настройка Django
Пятая часть - Установка и сборка Vue
Шестая часть - Создание таблиц средствами Django
Седьмая часть - Создание REST приложений на Django
Восьмая часть - Использование фреймворка Nuxt в приложении на Vue