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"})
Затем у меня возникает ошибка:
"Учетные данные для аутентификации не были предоставлены."
Как я могу исправить ошибку?
Вы переопределяете классы аутентификации, используя TokenAuthentication, что, в свою очередь, требует использования Token вместо JWT в заголовке Authorization.
Чтобы исправить, просто удалите декоратор @authentication_classes в вашем представлении:
@api_view(['GET', 'POST'])
@permission_classes([permissions.IsAuthenticated])
def task(request):
# ...
Я думаю, что вы отправляете JWT как токен в заголовке, но я думаю, что вам нужно иметь токен Bearer. Попробуйте Changing, возможно, это сработает.

