Django IsAdminUser REST Framework не запрещает пользователям без прав администратора - PullRequest
1 голос
/ 29 апреля 2020

Я хочу сделать один просмотр только для администратора.

Я использую простое функциональное представление с декоратором @permission_classes. Я хочу, чтобы это было доступно только для пользователей с правами администратора.

from rest_framework.decorators import permission_classes
from rest_framework.permissions import IsAdminUser
from django.http import JsonResponse

@permission_classes([IsAdminUser])
def testing(request):
    return JsonResponse({"status": "ok", "user": request.user.username, "is_staff": request.user.is_staff})

Однако, когда я скручиваюсь как анонимный пользователь, проверка явно не применяется:

curl http://localhost:8000/testing/
{"status": "ok", "user": "", "is_staff": false}

Я ожидаю, что будет отклонено, если я не вошел в систему или не был администратором.

Похоже, что я использую их правильно в соответствии с разрешениями и декораторами документы.

1 Ответ

1 голос
/ 29 апреля 2020

Попробуйте поставить @api_view(['GET']), например, перед @permission_classes (вы также должны импортировать api_view). Пример из документов :

from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

    @api_view(['GET'])
    @permission_classes([IsAuthenticated])
    def example_view(request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)
...