PRO

Что такое permissions и authentication в DRF?

Authentication в DRF определяет, кто выполняет запрос, а permissions решают, разрешено ли этому пользователю выполнить конкретное действие. Например, authentication может определить пользователя по токену, а permission — разрешить редактирование только автору объекта.
Подробный ответ

Что такое authentication

Authentication, или аутентификация, отвечает на вопрос: «Кто отправил запрос?». DRF проверяет переданные учётные данные, например session cookie, basic auth или токен, и устанавливает request.user и request.auth.

Что такое permissions

Permissions, или разрешения, отвечают на вопрос: «Может ли этот пользователь выполнить данное действие?». Проверка может зависеть от того, авторизован ли пользователь, от его роли или от конкретного объекта.

Пример настройки

from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet


class ArticleViewSet(ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    permission_classes = [IsAuthenticated]

В этом примере доступ к ViewSet получат только аутентифицированные пользователи.

Распространённые permissions

  • AllowAny — доступ разрешён всем;

  • IsAuthenticated — доступ только аутентифицированным пользователям;

  • IsAdminUser — доступ только администраторам;

  • IsAuthenticatedOrReadOnly — чтение доступно всем, а изменение только авторизованным пользователям.

Как ответить на собеседовании

Authentication определяет пользователя запроса, например по токену или сессии. Permissions определяют, разрешено ли ему выполнять действие. Сначала DRF аутентифицирует пользователя, затем применяет правила доступа.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге