Аутентификация JWT возвращает AnonymousUser в Django Rest Framework с помощью SimpleJWT

Я открываю этот вопрос в крайнем случае.

Я изучаю JWT и хочу внедрить его в свое приложение на django. У меня не было никаких проблем с Basic auth и Token auth, но JWT не аутентифицирует моего пользователя...

Это мой settings.py:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        'api.permissions.AdminOrTeacherOnly'
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ]
}

Вот мое мнение:

class StudentList(APIView):

    authentication_classes = []
    permission_classes = [AdminOrTeacherOnly]

    def get(self, request, format=None):
        students = Student.objects.all()
        serializer = StudentListSerializer(students, many=True)

        if not serializer.data:
            return Response(status=status.HTTP_204_NO_CONTENT)

        return Response(serializer.data, status=status.HTTP_200_OK)

Это мой класс разрешения AdminOrTeacherOnly:

class AdminOrTeacherOnly(permissions.BasePermission):
    """
    Object-level permission to only allow teachers of a student to edit.
    Assumes the model instance has an `owner` attribute.
    """
    message = 'Only admin or teacher can edit student detail.'

    def has_permission(self, request, view):
        # Only teacher and/or admin user will be able to,
        # edit and/or list this view.
        is_staff = bool(request.user and request.user.is_staff)
        is_teacher_group = str(request.user.groups.all().first()) == 'teacher'

        return is_staff or is_teacher_group 

Мне удается успешно получить токен обновления и доступа:

enter image description here

Затем, я добавляю это в Headers следующим образом и посылаю запрос:

enter image description here

В отладчике, когда он входит в класс разрешения:

enter image description here

Здесь request.user возвращает <django.contrib.auth.models.AnonymousUser object at 0x104f5afd0>

Я не знаю, чего мне не хватает. Просмотрел смежные вопросы, но не смог найти ничего полезного относительно SimpleJWT.

Вы переопределяете authentication_classes здесь:

class StudentList(APIView):
    authentication_classes = []

Добавьте JWTAuthentication к этому списку.

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