我有一个基于Django REST 框架的 API 的 Django 项目。
最近我使用django-guardian启用了对象级权限。但是,我还没有在我的项目中使用模型级权限框架(直到此刻我还没有看到任何目的。)
现在,当我在我的 API 视图集中打开DjangoObjectPermissions时,
class PhotoViewSet(viewsets.ModelViewSet)
permission_classes = (permissions.DjangoObjectPermissions,)
并向端点发出更新请求,以获得来自 Guardian 框架的适当“更改”权限的对象,我得到了403 FORBIDDEN
响应。
此响应的原因似乎在于请求调度阶段:
- 在这种情况下,DRF 检查模型权限。
DjangoObjectPermissions
继承自DjangoModelPermissions
。- DRF 呼叫
DjangoObjectPermissions.has_permission()
has_permission()
失败,因为我没有使用模型级权限。
DjangoObjectPermissions
在我的情况下使用的正确方法是什么?
- (A) 实现一个自定义权限类,继承
DjangoObjectPermissions
并覆盖它has_permission()
。 - (B) 为了它而打开 Django 的模型级权限框架。
- (C) 使用这个
hack变通方法跳过检查。