django的一个简单的基于类的权限后端

django-simple-perms的Python项目详细描述


django的非常简单的权限后端

基于类,没有数据库

受[django permission]启发(https://github.com/lambdalisue/django permission)


>使用项目应用程序中的django 1.10-python 3.5进行测试

方法,它将在PermissionLogic类中运行相应的方法名。

请参阅下面的“用法”部分以获取综合示例。


#在已安装的应用程序中添加simple-perms应用程序

<




authentication-backend s=(
‘simple-perms.permissionbackbackend'simple'perms.permissionbackbackbackbackbackbackbackbackbackbackback;在django的django.contrib.auth.backends.backends.modelbackbackbackend.modelbbackbackbackend'django.contrib.auth.backends.modelbbackbackbackbackend'django.django.contango.contrib.contrib.auth.backbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackbackback注册,permissionlogic



类项目逻辑(permissionlogic):


def add_project(self、user、project、perm):
返回true

def change_project(self、user、project,perm):
返回user.is_admin()或project.owner==user


def default_权限(self、user、project、perm):
可选,默认为全局默认权限,默认为false
返回user.is_admin()


register('project_app',projectlogic)
````

```python
user1.has懔perm('project懔app.add懔project')true
user1.has懔perm('project懔app.change懔project',user1懔project)懔true
user2.has懔perm('project懔app.change懔project',UsR1SO项目)S.Falue
Admin。HasyPrm(‘PrimeStupApp.ChaneEngEngy’,UsR1SUnjo项目)>Trime
‘BR/> BR/>默认权限
BR/>如果在注册的基于PrimeLogic的CLASE中不存在检查权限,后端将运行该类的Debug Tube权限方法。如果未定义默认权限,默认为全局默认权限,默认为false。

**更改全局默认权限**

*settings.py*

``python
`simple_perms_global_default_permission='path.to.custom_global_default_permission'
`````
*path/to.py*
``python
`def custom_global_default_permission(用户,obj,perm):
返回user.is_admin()
```

global_default_权限和default_权限具有与其他权限相同的参数:`(user,obj,perm)`



您可以使用simple_perms_-perms_-module_-perms_-perms_-module_-perms_-module_-perms_-module_-permu name='permission'
````

` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `测试用例
simple_perms.helpers导入AssertPermissions



Class TestContractPermissions(AssertPermissions,测试用例:
def setup(self):
self.admin=userfactory(role=“admin”)
self.contract=contractfactory()

def test_permissions(self):
permissions=[
{usr':'admin',perm':'contracts.add','args':(none,),'result':true,},
{'usr':'admin','perm':'contracts.view','args':(self.contract,),'result':true,},
{'usr':'admin','perm':'contracts.change','args':(self.contract,),'result':true,},
]
self.assertperms(permissions)
````


失败:

``` text
==============_对于_admin(contracts.tests.perms.testcontractpropmission)
——在“管理员”的测试“权限”中,
self.assertperms(permissions)
file“/app/django/django-simple-perms/simple-perms/helpers.py”,第37行,在“assertperms
raise
file“/app/django/django-simple-perms/simple-perms/simple-perms/helpers.py”第37行,第66行,在“测试“权限”中,
getattr(self,permispermission['usr'']]]]getattr(self,permispermission['usr'''usr''']]]是的*权限['args'])
断言错误:('perm error admin contracts.add:false不是true','perm error admin contracts.view:false不是true','perm error admin contracts.change:false不是true')

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

推荐PyPI第三方库


热门话题
java我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动