API 级别的 Django 组和权限(使用 django-rest-framework)

标签 django python-3.x django-rest-framework django-rest-auth django-permissions

考虑以下场景;
我有一堆用户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/

相关文章:

Django REST Framework - 如何快速检查用户权限?

Django 自定义字段列未创建

python - 在上一个错误后自动重启文件保存的 django 开发服务器

使用 Django 服务器主机名和监听端口作为 redirect_uri 的 Python-social-auth

python - 运行 Nose 测试时出现导入错误

python - 在 flask 中不返回任何内容,但我不明白为什么

python - 我如何在 Django 的嵌套序列化程序中过滤查询集

Django 迁移说数据库后端不可用

python-3.x - 有什么方法可以将 bs4.element.resultset 转换为单个 bs4.element.Tag

rest - 是不是rest API路由按权限分开比较好?