Получение «Учетные данные аутентификации не были предоставлены». об ошибке при попытке получить доступ к моему URL ModelViewSet - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю приложение, используя Django Rest Framework и используя аутентификацию на основе токенов. У меня есть PlaceViewSet класс, унаследованный от ModelViewSet. Я хочу, чтобы и list, и retrieve работали, даже если пользователь не отправил токен, тогда как создание, уничтожение и обновление должны быть разрешены, только если пользователь отправил токен. Но я получаю Authentication credentials were not provided. для запросов всех типов. Я также хочу придерживаться стандарта REST, чтобы список, извлечение, обновление, создание, уничтожение соответствовали одному и тому же набору моделей. Если DRF не разрешает никаких запросов без токена, если я установил для своей аутентификации по умолчанию значение TokenAuthentication, тогда почему я могу получить доступ к представлениям входа и регистрации?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете изменить политику разрешений в settings.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny'
    ],
}

Если вы хотите добавить специальные разрешения для методов.

Разрешение:

from rest_framework.permissions import IsAuthenticated, IsAdminUser    

class SpecialPermissionMixin(object):

    def get_permissions(self):

        user_permission_list = ['list', 'retrieve', 'update']
        admin_permission_list = ['destroy', 'create']

        if self.action in user_permission_list:

            permission_classes = [
                IsAuthenticated,
            ]
        elif self.action in admin_permission_list:

            permission_classes = [
                IsAdminUser,
            ]
        else:
            permission_classes = []

        return [permission() for permission in permission_classes]

Просмотр:

class BlogViewSet(SpecialPermissionMixin, viewsets.ModelViewSet):
      ...
...