Как предоставить доступ определенным пользователям для просмотра определенных API в django rest framework

У меня есть три API, созданных путем наследования класса APIView

class API1View(APIView):
    def get(self, request):
        return Response("API 1 view")

class API2View(APIView):
    def get(self, request):
        return Response("API 2 view")

class API3View(APIView):
    def get(self, request):
        return Response("API 3 view")

У меня три пользователя

  • user1
  • user2
  • user3

Я три вида пользователей.

  • клиент
  • менеджер
  • сотрудник

Различные типы пользователей должны иметь доступ к различным API

  • Менеджер может просматривать только API1 и API2
  • .
  • Клиент может просматривать только API1
  • .
  • Сотрудник может просматривать только API3
  • .

В будущем мне нужно иметь возможность отозвать доступ определенного пользователя к определенному API.

Хорошо ли использовать Django Groups или есть лучшие способы сделать это? Или есть ли какой-нибудь DRF способ сделать это? (Я видел разрешения DRF, но не уверен, что они подойдут для этого сценария)

Вы можете создавать свои пользовательские разрешения и использовать их в своих API:

from rest_framework.permissions import BasePermission


class CustomerPermission(BasePermission):
    message = 'You Don\'t Have Access To Customer APIs'

    def has_permission(self, request, view):
        return bool(request.user.is_customer)

Использование:

class API3View(APIView):
    permission_classes = [CustomerPermission]
    def get(self, request):
        return Response("API 3 view")

permission_classes получает несколько разрешений, но работает как and если вы хотите установить доступ к API для нескольких пользователей, вам вы должны написать пользовательское разрешение для этого тоже

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