Учетные данные для аутентификации 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]