Djinn Intranet身份验证模块,基于角色
djinn_auth的Python项目详细描述
Djinn_认证
djinn的基于角色的身份验证模块。该包也可用作 独立模块,因为它与其他djinn包没有关系
此模块建立在django.contrib.auth模块的基础上,并对其进行扩展 通过基于角色的授权,全球角色和本地角色(或: 特定模型实例上的角色)可以将角色分配给用户 还有一群人
对于(UN)分配,可以使用中指定的API djinn_auth.utils公司这提供了将角色分配给 全局和本地用户/组,并检查全局和本地 角色。特定检查使您能够检查用户是否具有角色, 直接或通过它的一个组。
请注意,虽然此模块不确定特定的用户模型 (因为这是一个可交换的模型),它将至少假设 用户权限关系的存在。
全局权限
全局权限提供了向用户授予权限的方法 或全球集团。这意味着检查 给定模型实例,还将返回全局权限。
您可以通过以下方式授予用户权限:
- give the user a permission through the User.user_permissions attribute
- give the user a role that has this permission
- add the user to a group that has a role that has this permission
- add the user to a group that has the permission
本地权限
您可以在特定的 模型实例依据:
- giving the user a local role on the object with that permission
- giving a group the user is part of a local role with that permission
- giving the permission to the user on the object
- 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
初始版本