Django: simplejwt не работает с @api_view

Я пытаюсь применить аутентификацию с помощью JWT-токенов к моему приложению Django. Я следую этому руководству https://simpleisbetterthancomplex.com/tutorial/2018/12/19/how-to-use-jwt-authentication-with-django-rest-framework.html

Я добавил эти настройки

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

Затем я добавил проверку подлинности в api_view

# views.py
@api_view(['GET', 'POST'])
@authentication_classes([authentication.TokenAuthentication])
@permission_classes([permissions.IsAuthenticated])
def task(request):
    if request.method == 'POST':
        if "type" in request.data:
            category_name = request.data["type"]
            task = create_task.delay(category_name)
            return Response({"message": "Create task", "task_id": task.id, "data": request.data})
        else:
            return Response({"message": "Error, not found 'type' in POST request"})

Затем у меня возникает ошибка:

"Учетные данные для аутентификации не были предоставлены."

на следующий запрос: enter image description here

Как я могу исправить ошибку?

Вы переопределяете классы аутентификации, используя TokenAuthentication, что, в свою очередь, требует использования Token вместо JWT в заголовке Authorization.

Чтобы исправить, просто удалите декоратор @authentication_classes в вашем представлении:

@api_view(['GET', 'POST'])
@permission_classes([permissions.IsAuthenticated])
def task(request):
    # ...

Я думаю, что вы отправляете JWT как токен в заголовке, но я думаю, что вам нужно иметь токен Bearer. Попробуйте Changing, возможно, это сработает. enter image description here

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