Заставьте REST Framework требовать аутентификацию для метода GET

Я работаю над приложением Django, которое использует REST Framework вместе со Swagger. Также добавил несколько моделей, и одна из них называется Example. Добавил несколько представлений, основанных на миксинах в views.py для ранее упомянутой модели.

В views.py я создал два класса: ExampleList (который использует GET для получения всех объектов, созданных из этой модели, и POST для добавления новой модели) и ExampleIndividual, который использует такие методы, как отдельные GET, PUT и DELETE.

В общем, вот как выглядит мой ExampleList класс:

class ExampleList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
    permission_classes = [IsAuthenticated]
    queryset = ExampleModel.objects.all()
    serializer_class = ExampleSerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

В файле settings.py в конфигурации REST_FRAMEWORK я установил:

'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
]

На данный момент все работает нормально. Я хочу сделать следующее: всякий раз, когда я хочу получить список всех объектов из модели Example (доступ к методу get() из класса ExampleList(), я хочу, чтобы это работало только если я аутентифицирован (используя опцию Authorize из Swagger). Если нет, должен возвращаться код состояния типа "FORBIDDEN"

Я попробовал использовать permission_classes = [IsAuthenticated] в начале метода, но это не сработало. Похоже, что я все еще могу GET все объекты без аутентификации в Swagger.

Посоветуйте, как мне правильно это сделать? Спасибо.

Пробовали ли вы использовать аутентификацию с помощью токена? При использовании этого метода в каждом запросе к API токен должен быть включен в поле заголовка Авторизация. https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication для проверки в браузере вы можете установить расширение Mod Header https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj там вы можете включить токен в поле заголовка.

Вернуться на верх