Permissions Zope:获取对象上角色的已获取权限
我认为这一定很容易,但我真的很难弄清楚:我想检查对象上角色的已获得权限 我不想检查实际用户的角色或权限,我只想检查匿名对象是否具有“访问内容信息”权限。如果在所讨论的对象上设置了权限,那么这很容易,但是在获得权限时,这会更加困难 我试过这个:Permissions Zope:获取对象上角色的已获取权限,permissions,roles,zope,acquisition,Permissions,Roles,Zope,Acquisition,我认为这一定很容易,但我真的很难弄清楚:我想检查对象上角色的已获得权限 我不想检查实际用户的角色或权限,我只想检查匿名对象是否具有“访问内容信息”权限。如果在所讨论的对象上设置了权限,那么这很容易,但是在获得权限时,这会更加困难 我试过这个: siteRoles = ('Anonymous', 'myRole1', 'myRole2', 'Manager') permission = 'Access contents information' rolesDictList = self.role
siteRoles = ('Anonymous', 'myRole1', 'myRole2', 'Manager')
permission = 'Access contents information'
rolesDictList = self.rolesOfPermission( permission )
roles = [roleDict['name'] for roleDict in rolesDictList if roleDict['selected']]
for i, role in enumerate(siteRoles):
if role in roles:
roleMin = i
break
return roleMin
这不起作用,因为它不授予获取的权限
我的下一个想法是向上遍历家长,直到找到一些未获得的权限。但这并不能真正解决问题,因为它会忽略在层次结构中较高位置设置的权限(好的,我可以检查获得的权限并继续向上)。还有一个奇怪的地方:“经理”总是在角色权限中被选中。为什么会这样
无论如何,我想一定有更简单的方法来实现这一点?只需使用
rolesForPermissionOn()
函数:
from AccessControl.PermissionRole import rolesForPermissionOn
roles = rolesForPermissionOn(permission, context)
这将返回对给定上下文具有特定权限的角色列表。它将根据需要遍历采集链。只需使用
rolesForPermissionOn()
功能:
from AccessControl.PermissionRole import rolesForPermissionOn
roles = rolesForPermissionOn(permission, context)
这将返回对给定上下文具有特定权限的角色列表。它将根据需要在收购链中穿行