Обработка аутентификации

REST Framework предоставляет классы аутентификации для идентификации пользователя, выполняющего запрос. Если аутентификация выполнена успешно, framework устанавливает User в request.user. Если ни один пользователь не прошел проверку подлинности, вместо него устанавливается экземпляр AnonymousUser.

REST Framework предоставляет следующие конечные точки аутентификации:

  • BasicAuthentication : Обычная проверка подлинности HTTP. Пользователь и пароль отправляются клиентом в заголовке HTTP Authorization, закодированном с помощью Base64. Подробнее здесь: https://en.wikipedia.org/wiki/Basic\_access\_authentication
  • TokenAuthentication : Аутентификация на основе токенов. Модель Token используется для хранения токенов пользователя. Пользователи включают токен в заголовке HTTP Authorization для проверки подлинности.
  • SessionAuthentication : Использует бекэнд Django session для аутентификации. Эта серверная часть полезна для выполнения запросов AJAX, прошедших аутентификацию, в интерфейс API с фронтенда сайта.

Можно создать кастомный способ аутентификации, используя подкласс BaseAuthentication, предоставляемый REST Framework, и переопределить метод authenticate().

Можно задать проверку подлинности для каждого представления или установить ее глобально с параметром DEFAULT_AUTHENTICATION_CLASSES.

Аутентификация определяет только пользователя, выполняющего запрос. Она не закрывает и не открывает доступ к представлениям. Для ограничения доступа к представлениям необходимо использовать access представления.

Все сведения об аутентификации можно найти здесь: http://www.django-rest-framework.org/api-guide/authentication/

Давайте добавим в наше представлени BasicAuthentication. Отредактируйте файл api/views.py в приложении courses и добавьте атрибут authentication_classes в CourseEnrollView следующим образом:

from rest_framework.authentication import BasicAuthentication



class CourseEnrollView(APIView):
    authentication_classes = (BasicAuthentication,)
    # ...

Пользователи будут идентифицироваться по учетным данным, заданным в заголовке Authorization HTTP-запроса.

results matching ""

    No results matching ""