Django-guardian和django-permissions等项目使您可以拥有对象级权限。但是,如果两个对象通过父子关系彼此相关,除非另有说明,否则子对象是否有任何方式可以从父对象继承权限?例如,subfolder
应继承parent folder
的权限,除非用户明确为子文件夹分配了不同的权限。
使用Django,特别是Django-guardian模块实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
当您检查用户是否对某个对象具有权限时,您可以检查它是否具有对其父对象的权限。
您甚至可能想要创建自己的功能,例如:
def your_has_perm(user, perm, obj):
has = user.has_perm(perm, obj)
if not has and hasattr(obj, 'parent'):
return your_has_perm(user, perm, obj.parent)
return has
这应该遍历父母,直到找到父母的权限或返回False。