Django Rest Framework 不接受 JWT 身份验证令牌

时间:2021-02-19 20:36:39

标签: django django-rest-framework jwt

我将 Django Restful API FrameworkSimple JWT 一起使用,并成功创建了用于接收和刷新用户令牌的 URL。 为了尝试使用令牌进行身份验证,我创建了一个仅列出数据库中所有帖子的视图。然后我将 IsAuthenticated 类分配给视图。

正如预期的那样,我收到一条错误消息,指出未提供身份验证凭据。然后,我继续使用 Postman 发出一个简单的 GET 请求,并使用“授权”选项卡中提供的身份验证令牌。类型设置为“熊令牌”。不幸的是,我仍然收到消息“未提供身份验证凭据”。带有 403 禁止代码。

我也尝试在 Headers 中提供令牌,以及发出 CURL 请求,一切都无济于事。

我的观点是这样的:

class PostListView(generics.ListAPIView):
    permission_classes = (IsAuthenticated,)
    queryset = Post.objects.filter()

这是序列化程序:

class PostListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ('__all__')

Django项目的settings.py:

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
    'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.AllowAny'],
    'DEFAULT_AUTHENTICATION_CLASSES:': ('rest_framework_simplejwt.authentication.JWTAuthentication',)
}
CORS_ALLOW_ALL_ORIGINS = True  # For testing purposes

我在网上学习了几个不同的教程,阅读了大量帖子,并遵循了 Simple JWT 的官方文档。

1 个答案:

答案 0 :(得分:0)

好吧,您正在做的是尝试过滤数据,而您的基本目的只是列出您的模型。对于过滤,请务必阅读文档 DRF Filtering

在您的代码中尝试这些更改。我希望它对你有用。

设置.py

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

视图.py

class UserList(generics.ListAPIView):
    permission_classes = (IsAuthenticated,)
    queryset = Post.objects.all()
    serializer_class = PostListSerializer

此后尝试使用访问令牌访问您的 API。要了解有关通用视图的更多信息,您可以访问此链接 Generic Views in DRF