考虑以下场景;
我有一堆用户和API类。我需要通过检查请求的用户的组权限来限制对每个 API 的访问,并允许用户执行组允许的操作。
假设我有一个用户user_xx
,他属于组group_xx
并且拥有权限activity |事件 |可以添加事件
。当 user_xx
尝试通过 HTTP-DELETE
方法访问 MyActivityAPI
时, View 类应限制访问。
我可以实现此功能吗?如果可能,如何实现?
我尝试过的方法
创建了一些组并为其分配了权限,并将用户添加到了相应的组中。我尝试访问受限制的 api 之一,但它允许我访问(预期行为:限制用户使用该 api)。
更新:
这是我简单的views.py
class MyApi(ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
最佳答案
如文档中所述,为了将 Django 模型权限应用于 View 集,您必须使用 DjangoModelPermissions
:
class MyApi(ModelViewSet):
permission_classes = (DjangoModelPermissions,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
在您之前的代码中,所有操作都允许任何经过身份验证的用户进行,因为您使用的是 permission_classes = (IsAuthenticated,)
。
关于API 级别的 Django 组和权限(使用 django-rest-framework),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48363587/