在django中混合系统和对象级别权限

时间:2014-07-01 12:35:54

标签: django django-rest-framework django-guardian

我在REST中使用django 1.6。我试图将对象级别和系统级权限合并到我的应用程序中。看了一下之后,我发现django-gurdian是最好的方法(因为它与所有其他应用程序一起玩得很好)。

虽然有关如何一起处理系统级权限和对象级权限,但我有点困惑。例如,

class Item(models.Model):
    ...
    class Meta:
        permissions = (
            ("item_create", "Can create an item") , # System privilege
            ("item_update", "Can update the item"), 
            ("item_delete", "Can delete the item"),
            ("item_read"  , "Can view the item")
        )

我开始写permissions.py时,我意识到我还不完全确定如何测试item_create,因为我还没有项目实例(也不是应该是系统特权)。

欣赏关于差异的任何话语和/或如何管理它们以及两者如何一起玩。

1 个答案:

答案 0 :(得分:0)

  1. 对于卫报的存在,请参阅djano-guardian纪录片:http://django-guardian.rtfd.org/
  2. 对于Django系统权限,请参阅:https://docs.djangoproject.com/en/dev/topics/auth/default/#default-permissions
  3. 您可能必须定义自己的方法来执行权限检查。伪代码:

    if is_system_permission(perm):
        user.has_perm(perm)
    else:
        guardian.user_has_perm(object, perm)
    

    干杯