我使用django 1.6与REST。我试图将对象级别以及系统级别的权限合并到我的应用程序中。在阅读了一些之后,我发现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")
)
当我意识到我不完全确定如何测试item_create
时,我开始写我的permissions.py
,因为我还没有一个项目实例(我也不应该为系统特权)。
欣赏任何关于它们的区别和/或如何管理它们以及它们如何一起发挥作用的话语。
- 关于Guardian权限,请参阅django- Guardian文档:http://django-guardian.rtfd.org/
- 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)
欢呼