【问题标题】:django - comparing django permissions and using django rulesdjango - 比较 django 权限和使用 django 规则
【发布时间】:2012-03-08 15:45:17
【问题描述】:

目前我正在寻找在 Django 中实现访问控制。我已经阅读了有关内置权限的信息,但它并不关心每个对象。例如,我想要“只有创建者可以删除他自己的项目”之类的权限。所以我读到了 django-guardian。再一次,在考虑之后,可能很难管理和检查约束是否会改变。

我看看下一个流行的权限管理应用程序,叫做 django-rules。这似乎符合我的要求。但是,我相信 django-rules 需要涉及模型实例(因此是对象级别),即如果我需要像“成员区域”这样的简单视图,它不会执行此功能。

这让我开始考虑在后一种情况下使用 contrib 的许可,在前一种情况下使用 django-rules。我的问题是,管理这两个权限框架有多容易?例如,我有不同的用户组。我担心管理员在管理系统中添加特定权限(以允许访问视图)的重叠场景,认为这应该就足够了,但结果会受到规则设置的约束。

我相信这是一个常见的案例,我会根据您的经验虚心寻求您的意见和建议。

【问题讨论】:

  • Django 规则不需要模型实例。模型实例是可选的。

标签: django django-permissions


【解决方案1】:

如果您通过 Django 管理站点执行此操作,则可以覆盖 has_delete_permission() 等方法。这些获取请求和对象作为参数,因此您可以使用它来设置规则,例如“用户 X 只能删除他自己的对象”。

【讨论】:

  • 不完全通过管理站点,但无论如何感谢。没有注意到那些方法..
  • 如果您想通过您自己的代码执行此操作,您可以将 user_can_delete(self, user) 等方法添加到您的模型中,并在您自己的代码以及 has_delete_permission() 管理方法中使用它们。
猜你喜欢
  • 2019-02-26
  • 2020-04-29
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2016-03-31
  • 2012-02-18
相关资源
最近更新 更多