提供基于字段值的对象权限系统(例如:object.owner==user)
django-field-object-permissions的Python项目详细描述
django-field-object-permissions是基于 对象的字段值。(例如:object.owner==用户)
安装
要安装,请运行:
pip install django-field-object-permissions
配置
将fieldobjectpermissions放入设置模块的INSTALLED_APPS:
INSTALLED_APPS = ( ... 'fieldobjectpermissions', )
2.替换默认的身份验证后端(fieldobjectpermissions基于 在上面):
AUTHENTICATION_BACKENDS = ( # django.contrib.auth.backends.ModelBackend, # Default fieldobjectpermissions.backends.FieldObjectPermissionsBackend, )
这些新值是可选的,默认值如下所示:
FIELD_OBJECT_PERMISSIONS = { 'OWNER_FIELDS': ('owner',), 'GROUP_FIELDS': ('group',), 'OWNER_ACTIONS': ('change', 'delete'), 'GROUP_ACTIONS': ('change', 'delete'), }
四。运行python manage.py migrate,因为要创建迁移后触发器 所需的额外权限。
用法
您现在可以分配像owner_change_foo这样的权限,以仅允许用户 匹配owner字段值以更改对象(或 当然是超级用户)。
或者group_delete_foo允许属于的任何用户 在对象的group字段中列出的要删除它的组(或 超级用户,你知道的)。
这些权限是在迁移后的信号处理程序中创建的,并且只会 为具有必需字段的模型创建。
通过为OWNER_FIELDS或GROUP_FIELDS指定多个字段,只有一个 列出的字段需要存在权限创建。只有一个需要 以匹配身份验证后端授予的权限。