Что такое permissions и authentication в DRF?
Подробный ответ
Что такое 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 аутентифицирует пользователя, затем применяет правила доступа.
Оцени свой прогресс