理想情况下,使用django-rest-framework-simplejwt和身份验证类JWTAuthentication时,当我不正确地传递令牌时,API应该给出403。
相反,当我发出API请求时,即使没有身份验证令牌,它也是成功执行的。
这是一个虚拟API,我担心的是身份验证应该工作。
我的代码如下所示:
class ViewSet(viewsets.ModelViewSet):
queryset = get_user_model().objects.all()
serializer_class = SomeSerializer
http_method_names = ("post", "patch")
authentication_classes = (JWTAuthentication,)当我调试时,我看到它正在执行JWTAuthentication,而这反过来又不返回任何内容。这是预期的,因为我没有在标题中传递令牌。
def authenticate(self, request):
header = self.get_header(request)
if header is None:
return None现在我认为视图应该给予拒绝的许可,这是不可能的。
无法理解这里缺少了什么。
发布于 2020-11-17 20:09:56
如果传递不正确的令牌,它将返回401状态响应。
但是,如果不在请求中添加授权头,django将不会返回401响应,并以AnonymousUser请求的形式处理请求。如果您只希望通过身份验证的用户能够访问您的ViewSet,则应该将permission_classes = [IsAuthenticated,]放在ViewSet中。
IsAuthenticated权限类可以从rest_framework.permissions导入
https://stackoverflow.com/questions/64877736
复制相似问题