"detail": "Учетные данные для аутентификации не были предоставлены." drf
Я занимаюсь проектом для домашних животных. И мне нужно сделать так, чтобы только авторизованные пользователи могли делать POST/PATCH запросы, и чтобы только владельцы предметов могли их изменять/удалять.
views.py(item_app)
class CreateItemView(APIView):
    serializer_class = CreateItemSerializer
    authentication_classes=[OwnAuthentication]
    permission_classes=[IsAuthenticatedOrReadOnly, IsOnwerOrReadOnly]
                       ... code ...
permissions.py(item_app)
from rest_framework import permissions
class IsOnwerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.owner == request.user
authentication.py(auth_app)
from django.contrib.auth.models import User
from rest_framework import authentication
from rest_framework import exceptions
class OwnAuthentication(authentication.BaseAuthentication):
    def authenticate(self, request):
            username = request.data.get('username')
            if not username:
                  return None
            try:
                  user= User.object.get(username=username)
            except User.DoesNotExist:
                  raise exceptions.AuthenticationFailed('No such user')
            return (user, None)
settings.py
AUTH_USER_MODEL = "auth_app.Users"
REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES':[
        'rest_framework.parsers.JSONParser',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}
[Авторизация осуществляется через JWT-токены, при входе я получаю токен доступа, копирую его и вставляю в заголовок "Authorization" в postman, и когда я включаю этот заголовок, все равно возникает ошибкаenter image description here]1
В вашем файле settings.py , JWTAuthentication установлен в качестве класса аутентификации по умолчанию.
REST_FRAMEWORK = {
    ...
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}
Однако, если вы посмотрите на последнюю часть вашего вопроса, там говорится, что используется аутентификация JWT, но CreateItemView использует другой класс аутентификации.
class CreateItemView(APIView):
    serializer_class = CreateItemSerializer
    # authentication_classes=[OwnAuthentication]
    permission_classes=[IsAuthenticatedOrReadOnly, IsOnwerOrReadOnly]
Чтобы использовать класс сертификации JWT для CreateItemView, очистите authentication_classes.
А чтобы применить несколько классов разрешений, нужно использовать оператор bit.
class CreateItemView(APIView):
    serializer_class = CreateItemSerializer
    authentication_classes=[OwnAuthentication]
    permission_classes=[IsAuthenticatedOrReadOnly|IsOnwerOrReadOnly]
    # or
    permission_classes=[IsAuthenticatedOrReadOnly&IsOnwerOrReadOnly]
Наконец, если посмотреть на последнюю картинку, которую вы предоставили, то в переданном значении не был указан тип токена. В вашем проекте используется JWT-аутентификация, вам нужно добавить 'Bearer' в начало и указать access_token.
Авторизация: 'Bearer {access_token}'