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第三方库


热门话题
如何表示1。。Java中的n关系   java在安卓应用程序中添加polaris viewer   Java字符串::replaceAll仅替换第一个出现(可能不正确的正则表达式)   java Tomcat/JBoss部署后脚本   如何在Heroku Java应用程序中运行发出web请求的周期进程   java如何以纳秒为单位证明算法的时间   Solaris上的java自定义ListCellRenderer(使用jre5)   java试图为我的播放器类测试块实现播放器重力(RealtutsGml平台教程)   c#消耗一个。带有java的net web服务未显示预期结果   java在KOI8\R中检索html   基于java图形的搜索与基于随机的搜索   java如何检查安卓设备上的可用空间?在SD卡上?