Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Создание 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

4
181.268 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые