gpt4 book ai didi

python - 将 RoleNeed 与 Flask Principal 相结合

转载 作者:太空狗 更新时间:2023-10-30 02:30:02 24 4
gpt4 key购买 nike

我正在尝试创建一个权限,要求用户具有角色 A 或角色 B。

根据 Python Flask Principal文档中,以下行创建了一个权限,要求用户具有角色 A 和角色 B。

combined_permission = Permission(RoleNeed('roleA'), RoleNeed('roleB'))

您知道如何使用 OR 而不是 AND 创建权限吗?

最佳答案

就目前而言,需要使用 OR 检查组合权限的需求。引自 the documentation :

class flask_principal.Permission(*needs)
Represents needs, any of which must be present to access a resource

如果您想要一个 AND,只需将 Permission 子类化并覆盖 the allows method首先检查集合的交集是否与权限的需求相同:

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

关于python - 将 RoleNeed 与 Flask Principal 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com