首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRF django-rest框架-simplejwt JWTAuthentication不工作

DRF django-rest框架-simplejwt JWTAuthentication不工作
EN

Stack Overflow用户
提问于 2020-11-17 14:59:45
回答 1查看 975关注 0票数 0

理想情况下,使用django-rest-framework-simplejwt和身份验证类JWTAuthentication时,当我不正确地传递令牌时,API应该给出403

相反,当我发出API请求时,即使没有身份验证令牌,它也是成功执行的。

这是一个虚拟API,我担心的是身份验证应该工作。

我的代码如下所示:

代码语言:javascript
复制
class ViewSet(viewsets.ModelViewSet):
    queryset = get_user_model().objects.all()
    serializer_class = SomeSerializer
    http_method_names = ("post", "patch")
    authentication_classes = (JWTAuthentication,)

当我调试时,我看到它正在执行JWTAuthentication,而这反过来又不返回任何内容。这是预期的,因为我没有在标题中传递令牌。

代码语言:javascript
复制
    def authenticate(self, request):
        header = self.get_header(request)
        if header is None:
            return None

现在我认为视图应该给予拒绝的许可,这是不可能的。

无法理解这里缺少了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 20:09:56

如果传递不正确的令牌,它将返回401状态响应。

但是,如果不在请求中添加授权头,django将不会返回401响应,并以AnonymousUser请求的形式处理请求。如果您只希望通过身份验证的用户能够访问您的ViewSet,则应该将permission_classes = [IsAuthenticated,]放在ViewSet中。

IsAuthenticated权限类可以从rest_framework.permissions导入

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64877736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档