【问题标题】:Mixing system and object level permissions in django在 django 中混合系统和对象级别的权限
【发布时间】:2014-07-01 12:35:53
【问题描述】:

我正在使用带有 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,因为我还没有项目实例(我也不应该获得系统特权)。

赞赏任何有关差异和/或如何管理它们以及两者如何一起玩的词。

【问题讨论】:

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


    【解决方案1】:
    1. 有关 Guardian 权限,请参阅 djano-guardian 文档:http://django-guardian.rtfd.org/
    2. 有关 Django 系统权限,请参阅:https://docs.djangoproject.com/en/dev/topics/auth/default/#default-permissions

    您可能必须定义自己的方法来完成权限检查。伪代码:

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

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2012-06-14
      • 2014-01-10
      • 2017-07-12
      • 1970-01-01
      相关资源
      最近更新 更多