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

Я разрабатываю API с использованием Django Rest Framework. Но когда я пытаюсь получить доступ к консоли, выдает такую ошибку:

@api_view(['GET'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def get_all_messages(request, user_id):
    messages = Message.objects.filter(receiver_id=user_id)
    serializer = MessageSerializer(messages, many=True)
    return Response(serializer.data)

from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView


urlpatterns = [
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('admin/', admin.site.urls),
    path('api/get-all-messages/<int:user_id>/', get_all_messages),
]
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [  # Corrected typo here
        'rest_framework.authentication.TokenAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

http://localhost:8000/api/token/ скопируйте токен

Я искал, но они говорят, что нужно изменить AUTHENTICATION PERMISSIONS в REST_FRAMEWORK, что я и сделал, как вы видите, но безрезультатно.

rest_framework_simplejwt Токены не могут быть аутентифицированы rest_framework TokenAuthentication!

Используйте rest_framework_simplejwt JWTAuthentication для аутентификации.

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

Если вы хотите использовать другой механизм аутентификации для конкретного view, используйте декораторы вроде этого:

@authentication_classes([TokenAuthentication])

Если не нужно, не используй!


Я бы рекомендовал руководство по началу работы. [simple-jwt]

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