向Django添加客户端可定义的权限

django-permafrost的Python项目详细描述


Permafrost DevelopPermafrost CIDocumentation Status

Django永久冻土

Django永久冻土是Django权限框架的扩展。它的目标是允许开发人员向站点上的客户端用户公开一些权限,以便他们可以创建和管理自定义用户角色。在

它补充道:

  • 一个视图Mixin,支持基于不同HTTP方法类型(GET、POST、PUT等)的用户权限,以实现额外的粒度控制。在
  • 一个视图Mixin,它将所有失败的权限检查捕获到Django的日志记录设置中。在
  • 支持客户端用户可定义角色和权限的应用程序。它使用底层的Django权限系统并控制哪些权限对用户公开。
    • 开发人员既可以要求权限类的权限,也可以有客户端设置的可选权限。在

例如,您有一个SAAS平台,其中有管理员客户端。他们管理系统中主帐户上的其他用户(如员工等),并希望能够为不同的用户定义不同的权限。他们可能有一个员工,他们希望能够管理电子邮件列表,但不允许他们邀请用户,但这两个都被视为员工类别。在

安装

要安装,只需使用pip

> pip install django-permafrost

若要将其添加到项目中,请将其添加到您settings.py中的安装应用程序列表

^{pr2}$

…然后迁移

> ./manage.py migrate

设置

Django Permafrost的目标是允许客户机在开发人员定义的类别下,使用开发人员定义的必需和可选权限创建自己的永久冻土角色。在

开发人员定义的类别示例如下:

SampleCategoryPermissionFormat:PERMAFROST_CATEGORIES={'user':{'label':_("User"),'access_level':1,'optional':[{'label':_('Can Add Users to Role'),'permission':('add_user_to_role','permafrost','permafrostrole')},],'required':[{'label':_('Can add Role'),'permission':('add_permafrostrole','permafrost','permafrostrole')},],},}

这将被添加到Djangosettings.py文件中(或者至少包括在中)。在

在上面,我们定义了用户类别,给它一个可本地化的标签“User”,并以“自然密钥”格式提供了两个权限(因为PKs使用权限可能不可靠),第一个是可选的,第二个是必需的。在

还有一个访问级别设置,有助于更轻松地对访问级别进行排序。在

eh3建议>

建议您更新代码以使用permanfrotrole的内置函数添加用户和权限。它们增加了额外的检查级别,以确保永久冻土类别配置允许传入的权限。在

例如,对组的权限:

group.permissions.set([permission_list])group.permissions.add(permission,permission,...)group.permissions.remove(permission,permission,...)group.permissions.clear()

可替换为:

PermafrostRole.permissions_set([permission_list])PermafrostRole.permissions_add(permission,permission,...)PermafrostRole.permissions_remove(permission,permission,...)PermafrostRole.permissions_clear()

便利工具

有一个工具可以帮助开发人员以永久冻土期望的格式列出可用的权限。在

> ./manage permlist

使用该命令将生成如下列表

> ./manage.py permlist

Permlist formatted for your PermafrostRoles configuration
{'label':_('Can add email address'), 'permission': ('add_emailaddress', 'account', 'emailaddress')},
{'label':_('Can change email address'), 'permission': ('change_emailaddress', 'account', 'emailaddress')},
{'label':_('Can delete email address'), 'permission': ('delete_emailaddress', 'account', 'emailaddress')},
...

可将永久冻土层中的每一个类别都复制到配置行中。在

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

推荐PyPI第三方库


热门话题
java在Android Studio中使用while循环显示包含textview对象的数据   创建名为“userController”的bean时发生java错误:通过字段“userService”表示未满足的依赖关系   java PDFBox PDFImageWrite。writeImage未正确处理所有字符   java无法识别代码中的nzec错误   无法更改java TabLayout字体   在Java中使用子字符串删除部分字符串   Java中的listener addPropertyChangeListener方法   java可以同时拖动多个对象   java如何将数组中的值添加到向量中   java为什么在Camel 3.7.3中无法正确计算属性?   与后端问题不同的机器中的java客户端资源   带字符串的java分割字节数组?   java On_选项_项目_选择的方法说明   java如何在画布的父画中画一个圆?   连接超时和打开连接数的java Netty通道配置   java mysql中如何防止向数据库中插入重复数据   升级到macOS Big Sur后,java无法启动Neo4j控制台应用程序   在Java中使用XSLT将XML转换为HTMLString的ajax   java无法使用Apache POI获取Excel工作表中的数据