我正在尝试创建一个要求用户具有角色 A 或角色 B 的权限。
根据Python Flask Principal文档,以下行创建了一个需要用户具有角色 A 和角色 B 的权限。
combined_permission = Permission(RoleNeed('roleA'), RoleNeed('roleB'))
您知道如何根据 OR 而不是 AND 创建权限吗?
我正在尝试创建一个要求用户具有角色 A 或角色 B 的权限。
根据Python Flask Principal文档,以下行创建了一个需要用户具有角色 A 和角色 B 的权限。
combined_permission = Permission(RoleNeed('roleA'), RoleNeed('roleB'))
您知道如何根据 OR 而不是 AND 创建权限吗?
就目前而言,组合权限的需求通过OR
. 引用文档:
类flask_principal。Permission (* needs )
表示需要,其中任何一个都必须存在才能访问资源
如果你想要一个AND
相反的,只需子类化Permission
该类并覆盖该allows
方法以首先检查集合的交集是否与权限的需求相同:
class RequiresAll(Permission):
def allows(self, identity):
if not has_all(self.needs, identity.provides):
return False
if self.excludes and self.excludes.intersection(identity.provides):
return False
return True
def has_all(needed=None, provided=None):
if needed is None:
return True
if provided is None:
provided = set()
shared = needed.intersection(provided)
return shared == needed