gpt4 book ai didi

open-policy-agent - 在 OPA rego 中使用 OR 条件

转载 作者:行者123 更新时间:2023-12-04 16:37:41 25 4
gpt4 key购买 nike

我想对以下内容进行 OR 操作,其中我的 arr 计数不等于 0 并且我的电子邮件不包含“test.com”,但是我的规则产生了错误,有关如何改进它的任何帮助非常感谢一行!先感谢您

any([count(arr) != 0, not contains(email, "test.com")])

最佳答案

更一般地说,Rego 不允许在同一函数中使用 OR 语句。使用 any()对于简单的情况很有效,但对于复杂的情况可能变得笨拙,因此它被认为是一种反模式。
相反,Rego 使用 incremental rules ,其中每个 Rule 中的每个语句都用 AND 运算在一起,而同名的规则用 OR 运算在一起。
考虑以下 deny规则。简而言之,它表示如果以下至少一项,我们将拒绝该请求:

  • 用户不是管理员,或者
  • 今天是星期日。
  • deny {
    input.role != "admin"
    }

    deny {
    time.weekday(time.now_ns()) == "Sunday"
    }
    这将只允许对 admin 的请求在星期日以外的日子里扮演角色。如果我们说:
    deny {
    input.role != "admin"
    time.weekday(time.now_ns()) == "Sunday"
    }
    然后我们只会拒绝来自非 admin 的请求。周日的角色。来自 admin 的请求总是被允许的。

    关于open-policy-agent - 在 OPA rego 中使用 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67423438/

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