2012-03-08 28 views
7

目前我正在寻找在Django中实现访问控制。我已经阅读了关于内置权限的内容,但是并不需要注意每个对象的基础。例如,我需要像“只有创建者可以删除他自己的项目”这样的权限。所以我读了关于django-guardian。然后再考虑一下,可能难以管理和检查约束条件是否改变。django - 比较django权限和使用django规则

我看看下一个流行的权限管理应用程序django-rules。这似乎符合我的要求。不过,我相信django-rules需要一个模型实例参与(因此是对象级别),即如果我需要像“member's area”这样的简单视图,它不会执行此功能。

这让我想到了在后面的场景中使用contrib的权限和前者的django-rules。我的问题在于,管理两个权限框架有多简单?例如,我有不同的用户组。我担心重叠的情况,即管理员在管理系统中添加了一个特定的权限(以允许访问视图),认为这应该就足够了,但是却被规则限制了。

我相信这是一种常见的情况,我根据您的经验谦虚地寻求您的建议和建议。

+0

Django规则不需要模型实例。模型实例是可选的。 – 2017-11-15 07:22:45

回答

1

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

+0

不完全通过管理网站,但无论如何感谢。没有注意到这些方法.. – goh 2012-03-08 16:03:24

+0

如果你想通过你自己的代码做到这一点,你可以添加像user_can_delete(self,user)这样的方法到你的模型中,并在你自己的代码和has_delete_permission()管理方法中使用它们。 – che 2012-03-09 09:02:58