提供基于字段值的对象权限系统(例如:object.owner==user)

django-field-object-permissions的Python项目详细描述


django-field-object-permissions是基于 对象的字段值。(例如:object.owner==用户)

安装

要安装,请运行:

pip install django-field-object-permissions

配置

  1. fieldobjectpermissions放入设置模块的INSTALLED_APPS

    INSTALLED_APPS = (
       ...
       'fieldobjectpermissions',
    )
    

2.替换默认的身份验证后端(fieldobjectpermissions基于 在上面):

AUTHENTICATION_BACKENDS = (
    # django.contrib.auth.backends.ModelBackend,  # Default
    fieldobjectpermissions.backends.FieldObjectPermissionsBackend,
)
  1. 这些新值是可选的,默认值如下所示:

    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_FIELDSGROUP_FIELDS指定多个字段,只有一个 列出的字段需要存在权限创建。只有一个需要 以匹配身份验证后端授予的权限。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
手机上的html调试Java web应用程序   Java当前日期和过去日期之间的差值,以年、月、日、小时、分、秒为单位   如果方法名称相同,java如何使扩展类不从上面的类触发方法?   即使在提供了准确的firebase引用之后,java仍出现“无法跳转到类型”异常。请看详情   jar文件中的java图像   java如何避免从缓存读取时修改相同的对象实例?   Android中java完全控制的线程队列   JTextArea中的java计算   java如何独立运行。jar作为64位mashine上的32位   java在尝试实例化自引用泛型类的实例时,如何处理自引用类型参数   java如何安装着色jar而不是原来的jar   java在resultSet之后使用If-Else   多线程是java。朗,反思一下。方法调用线程安全   java 7语言向后兼容性   Objective C中的Category和Java 8中的Default方法是否等效?