Djinn Intranet身份验证模块,基于角色

djinn_auth的Python项目详细描述


Djinn_认证

djinn的基于角色的身份验证模块。该包也可用作 独立模块,因为它与其他djinn包没有关系

此模块建立在django.contrib.auth模块的基础上,并对其进行扩展 通过基于角色的授权,全球角色和本地角色(或: 特定模型实例上的角色)可以将角色分配给用户 还有一群人

对于(UN)分配,可以使用中指定的API djinn_auth.utils公司这提供了将角色分配给 全局和本地用户/组,并检查全局和本地 角色。特定检查使您能够检查用户是否具有角色, 直接或通过它的一个组。

请注意,虽然此模块不确定特定的用户模型 (因为这是一个可交换的模型),它将至少假设 用户权限关系的存在。

全局权限

全局权限提供了向用户授予权限的方法 或全球集团。这意味着检查 给定模型实例,还将返回全局权限。

您可以通过以下方式授予用户权限:

  1. give the user a permission through the User.user_permissions attribute
  2. give the user a role that has this permission
  3. add the user to a group that has a role that has this permission
  4. add the user to a group that has the permission

本地权限

您可以在特定的 模型实例依据:

  1. giving the user a local role on the object with that permission
  2. giving a group the user is part of a local role with that permission
  3. giving the permission to the user on the object
  4. giving the permission to a group the user is part of on the object

为了防止获取实例的全局权限, 实现acquire_global_roles属性并返回false。这个 启用用户具有全局“允许”但某些本地“允许”的场景 “禁止”。请注意,这只允许全局角色,而不允许 对用户或其组本身的直接权限。

如果需要添加某种层次结构,可以使用 从实例上的属性获取,该属性必须返回 它希望从中获取角色/权限的实例

安装

使用“pip”或“easy”安装通常的方法。添加djinn_auth 安装的应用程序。将djinn_auth后端添加到 身份验证后端设置:

AUTHENTICATION_BACKENDS = (
‘django.contrib.auth.backends.ModelBackend’, ‘djinn_auth.authbackend.AuthBackend’ )

使用量

djinn_auth模块的基本用途与使用 内置Django授权。您可以使用相同的装饰器或 调用,因为djinn_auth将它自己的后端添加到自动更新中 链子。下面是一些简单的案例。检查utils.py文件 完整的API是的,您需要阅读python代码..!

创建角色并添加权限:

from djinn_auth.models import Role from django.contrib.auth.models import Permission

owner_role = Role.objects.create(name=”owner”)

do_something = Permission.objects.get(codename=”myapp.do_something”)

owner_role.add_permission(do_something)

为用户或组分配全局角色(假设您有一个用户 _博多巴利纳:

>> from djinn_auth.utils import assign_global_role, has_global_role >> assign_global_role(bobdobalina, owner_role) >> has_global_role(bobdobalina, owner_role) True >>

这将授予我们对该角色的权限(请注意 后端通常由Django身份验证机器使用 _用户已烫发电话:

>> from djinn_auth.authbackend import AuthBackend >> backend = AuthBackend() >> backend.has_perm(bobdobalina, “myapp.do_something”) True

撤销:

>> from djinn_auth.utils import unassign_global_role >> unassign_global_role(bobdobalina, owner_role) >> has_global_role(bobdobalina, owner_role) False >> backend.has_perm(bobdobalina, “myapp.do_something”) False

分配本地角色:

>> from djinn_auth.utils import assign_local_role, has_local_role >> instance = MyContentType.objects.get(pk=666) >> assign_local_role(bobdobalina, instance, owner_role) >> has_local_role(bobdobaline, instance, owner_role) True >> backend.has_perm(bobdobalina, “myapp.do_something”) False >> backend.has_perm(bobdobalina, “myapp.do_something”, obj=instance) True

视图

为保护基于类的视图,DjnnIAUTH提供了一个MIXIN类 添加权限检查:djnnAuth.VIEWS.BasePrExistPosieCdTeCdMin。

像这样使用:

from django.views.generic.base import View from djinn_auth.views.base import PermissionProtectedMixin

class MyView(PermissionProtectedMixin, View):

permission = “myapp.view”

甚至:

class MyView(PermissionProtectedMixin, View):

permission = {‘GET’: ‘myapp.view’, ‘POST’: ‘myapp.edit’}

1.0.7

  • 导入修复程序一些库已更新

1.0.6条

  • django 1.8+和向后兼容性

1.0.5

  • 获得本地角色的便利性
  • 管理增强功能

1.0.4条

  • 添加了组基实现
  • 启用身份验证后端“获取”

1.0.3

  • 在utils方法中对作为字符串代表的角色的更多支持

1.0.2条

  • 为管理用户界面添加了admin.py
  • made在实用程序中具有角色函数接受角色名和对象
  • 已交换用户模型的修复程序
  • 添加保护视图MIXIN

1.0.1

  • 为全局角色添加了单元测试
  • 更多自述文件
  • 修复了localrole中的repr问题

1.0.0

初始版本

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

推荐PyPI第三方库


热门话题
jenkins在java代码的csv中使用前导零传递数字   终止java应用程序javaw。exe eclipse   java平均字长。文本   java在事务中关闭连接时会发生什么?   java如何为rich faces extendedDatatable启用可调整大小的列?   SpringJavaWebApp头nosniff不适合js和css文件   Java:抛出异常   java获取拒绝ArrayList中存在的用户名的代码。   关于编写JNDI服务提供者的java教程   java Android emulator电子书示例已停止   java如何防止双向关系中的循环   在Java中,如何将接口的实现作为变量传递给方法?   java有没有办法通过注释来监听CoreNLP处理的进度?   java Eclipse错误:导入项目时“无法读取项目描述文件”   java为什么findViewById返回null?