Django REST框架:使用没有模型级权限的对象级权限

时间:2015-12-19 13:38:21

标签: python django django-rest-framework django-guardian

我有一个基于Django REST framework的API的Django项目。

最近,我使用django-guardian启用了对象级权限。但是我还没有在我的项目中使用model-level permissions framework(直到这一刻我没有看到任何目的。)

现在,当我在API视图集中打开DjangoObjectPermissions时,

class PhotoViewSet(viewsets.ModelViewSet)
    permission_classes = (permissions.DjangoObjectPermissions,)

并向端点发出更新请求,以获取具有正确"更改"的对象。来自Guardian框架的许可,我得到了403 FORBIDDEN回复。

此回复的原因似乎在于request dispatch stage

  1. 在这种情况下,DRF会检查模型权限。
  2. DjangoObjectPermissions继承自DjangoModelPermissions
  3. DRF致电DjangoObjectPermissions.has_permission()
  4. has_permission()失败,因为我没有使用模型级权限。
  5. 在我的案例中使用DjangoObjectPermissions的正确方法是什么?

    • (A)实施自定义权限类,从DjangoObjectPermissions继承并覆盖has_permission()
    • (B)仅仅为了它而打开Django的模型级权限框架。
    • (C)使用此 hack workaround跳过检查。

0 个答案:

没有答案