提供基于字段值的对象权限系统(例如: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第三方库


热门话题
java有没有办法使多个对象初始化更紧凑?   java确保BUnit包和测试包不包含在生产代码中   java如何使JTextField更小,而不是填满整个空间?   javaawt的矩形交点   用户连续登录应用程序的java条纹(Android)   maven如何在服务器上运行java项目,并将其作为jar添加到EAR项目中   java如何在jar/war的资源文件夹中创建png?   swing在Java中未选择列表项时禁用按钮   java GridView x BaseAdapter并在onItemClick中重新加载   java Apache POI未应用某些颜色索引   java创建URL使用uri有什么区别。解析/uri。生成器/连接字符串?   java JavaFX jfoenix运行时错误(JFXDatePicker)   右旋转二叉搜索树   在Java标准版中运行Java移动应用程序   java为什么要为每个实例创建静态hashmap?   java如何使用RTC唤醒和报警意图   java获取对象中的JSON表达式   (Java)服务器不接受多个连接   java为什么我的目的地为null?   java使用多个参数执行存储过程,并使用spring数据jpa将结果集映射到非实体类