未提供 Django REST 身份验证凭据

问题描述 投票:0回答:1

我正在使用 Django Rest Framework 开发一个 API。 但是当我尝试访问控制台时出现此错误:

@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/ copy the token

我已经搜索过,但他们说要更改 REST_FRAMEWORK 的身份验证权限,我已经这样做了,如您所见,但无济于事。

django rest jwt
1个回答
0
投票

rest_framework_simplejwt
无法验证令牌
rest_framework
TokenAuthentication

使用

rest_framework_simplejwt
JWTAuthentication
进行身份验证。

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

如果你想对特定的

view
使用不同的身份验证机制,那就需要使用这样的装饰器:

@authentication_classes([TokenAuthentication])

如果不需要就不要使用!

© www.soinside.com 2019 - 2024. All rights reserved.