API 级别的 Django 组和权限(使用 django-rest-framework)
Django groups and permissions in API level (with django-rest-framework)
考虑以下场景;
我有一堆 Users 和 API classes。我需要通过检查请求的用户的组权限来限制对每个 API 的访问,并允许用户执行组允许的事情。
假设我有一个用户user_xx
,他属于组group_xx
并且有权限activity | activity | Can add activity
。当 user_xx
试图通过 HTTP-DELETE
方法访问 MyActivityAPI
时,视图 class 应该限制访问。
我可以实现此功能吗?如果可能,怎么做?
我试过的方法
创建了一些组并为它们分配了权限,并将用户添加到相应的组中.我试图访问受限 api 之一,但它允许我访问(预期行为:限制 api 中的用户)。
更新:
这是我的简单 views.py
class MyApi(ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
如文档中所述,为了将 Django 模型权限应用于视图集,您必须使用 DjangoModelPermissions
:
class MyApi(ModelViewSet):
permission_classes = (DjangoModelPermissions,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
在您之前的代码中,所有操作都允许对任何经过身份验证的用户执行,因为您使用的是 permission_classes = (IsAuthenticated,)
。
考虑以下场景;
我有一堆 Users 和 API classes。我需要通过检查请求的用户的组权限来限制对每个 API 的访问,并允许用户执行组允许的事情。
假设我有一个用户user_xx
,他属于组group_xx
并且有权限activity | activity | Can add activity
。当 user_xx
试图通过 HTTP-DELETE
方法访问 MyActivityAPI
时,视图 class 应该限制访问。
我可以实现此功能吗?如果可能,怎么做?
我试过的方法
创建了一些组并为它们分配了权限,并将用户添加到相应的组中.我试图访问受限 api 之一,但它允许我访问(预期行为:限制 api 中的用户)。
更新:
这是我的简单 views.py
class MyApi(ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
如文档中所述,为了将 Django 模型权限应用于视图集,您必须使用 DjangoModelPermissions
:
class MyApi(ModelViewSet):
permission_classes = (DjangoModelPermissions,)
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
在您之前的代码中,所有操作都允许对任何经过身份验证的用户执行,因为您使用的是 permission_classes = (IsAuthenticated,)
。