基于django行的权限

时间:2011-12-17 12:12:37

标签: django permissions django-admin

django的1.3文档说

  

要在您自己的身份验证后端中启用对象权限,您只需允许将obj参数传递给权限方法,并将supports_object_permissions类属性设置为True。

所以我实现了自己的身份验证后端,设置了supports_object_permissions = True并定义了def has_perm(self, user_obj, perm, obj=None)

我现在期待什么,导航管理页面会导致多次调用该方法(确实会发生这种情况),而且,当我在模型的列表网站上时,{要填充实际对象的{1}}参数。例如。当我列出一个商店的产品时,对于这些产品中的每个产品都会被调用,所以我可以单独确定是否要显示该对象等等。

实际发生了什么obj总是obj。我是否认为这个概念错了,或者我还有其他任何事情让我的实际对象传递到那里?

1 个答案:

答案 0 :(得分:1)

Django的默认权限系统是类级别(表级别),而不是行级别。换句话说,您无法分配基于行(基于实例)的权限。这是对系统的限制。

django-guardian这样的项目在django中实现了行级(实例级)权限。您可以在djangopackages.com网站上找到其他permissions projects的列表。