如何在Django Rest Framework中为IsAuthenticated等权限类创建自定义响应?

xriantvc  于 2023-03-31  发布在  Go
关注(0)|答案(2)|浏览(110)

如何为权限类创建自定义响应
现在的回应是:

{"detail": "Authentication credentials were not provided."}

我想要的答案:

{
  "status": 403,
  "message": "Authentication credentials were not provided",
  "response": {....}
}
eivnm1vs

eivnm1vs1#

根据官方文档here,您需要覆盖View中的.handle_exceptions方法以自定义响应。
这里的官方文档展示了如何创建自定义异常处理程序。

42fyovps

42fyovps2#

也许不是什么行动所面临的,但一个类似的问题,我只是想把这个作为一个选项张贴给其他有这个问题的人。
我也面临着同样的问题,在我的例子中,我有一个自定义的身份验证类,它在我的视图中使用。
这是我找到的解决方案。
django权限类在引发permission_denied时的默认行为是检查

if request.authenticators and not request.successful_authenticator:
    raise exceptions.NotAuthenticated()  # <-- HERE
raise exceptions.PermissionDenied(detail=message, code=code)

您可以在此link中看到更详细的信息。在我的示例中,我没有在成功验证后执行return user, None
我一开始使用return user, None,自定义权限就开始工作了。

相关问题