Когда ваш запрос достигает функции list
, это означает, что он уже прошел и этапы аутентификации и разрешения.
Если вы используете одни и те же классы для разрешения и аутентификации для всех действий на вашем ViewSet
вы должны определить их в объявлении класса:
class MyViewSet(viewsets.ViewSet):
authentication_classes = (apiauth.SessionAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
Если вы пытаетесь использовать разные классы аутентификации / разрешений для действия list
, вы можете переопределить get_authenticators
и get_permissions
методы:
class MyViewSet(viewsets.ViewSet):
...
def get_authenticators(self):
if self.action == 'list':
# Set up here
return YourAuthenticators
return super().get_authenticators()
def get_permissions(self):
if self.action == 'list':
# Set up here
return YourPermissions
return super().get_permissions()