这是我第一次听到雷戈的话,我去了他们想帮助的docs,我也赞同我的理解。
https://www. openpolicyagent.org/docs/latest/policy-language/#the-basics” rel=“nofollow noretinger” 基本部分:
你们可以使用一条规则界定新的概念。 例如,如果平等表达是真实的,则以下事实是真实的。
v if "hello" == "world"
如果我们评估,结果就没有界定,因为该规则的主体从未评价过。 因此,该规则产生的文件没有界定。
如果是“真实”的,那么<代码>v就可看到您在Rego中是如何思考的,那么如果该表述是“真实的”,那么该表述就会执行。
提及未定义的价值观的言论也没有界定。 这包括比较,例如!
v == true // undefined decision
v != true // undefined decision
除<条码>未定义的条码>和伪造外,所有数值均视为<条码>。
un Defin,但实际差异是:
false。
Rego使用JSON的比较,因此将检测为JSON,然后确认为false
,说明我们为什么要提供unfin
。 相反,我们避免了这种情况。
我很想知道false
及其使用案例,我发现这个例子:here:
default allow := false
allow if {
input.user == "bob"
input.method == "GET"
}
allow if input.user == "alice"
在此,我们先将<代码>allow与default
。 <代码>false的关键词 即便如此,它还是受到以下条件的影响:false
。
如果没有缺省定义,<代码>allow的文件将只是un specified
,以便提供相同的投入。
仍然看不到这一点是否有用,因为:
无定义和虚假的行为也一样。 为了成功(或为了制定价值规则),询问中的所有陈述(或规则的主体)必须是真实的。
因此,我仍然可以处理<代码>allow as un defined
(note:, 本条从default
。 关键词节
另一个例子是in 该职能旨在退回<代码>true或fal
。 因此,我们可以在一条规则中加以使用,看v
?
就像:
v if "hello" == "world"
我们用“成员操作者<代码>in”取代if “hello”=“world”
:
every server in site.servers {
endswith(server.name, "-dev")
}
同一逻辑的,规则的结果将是true
或false
, 然后every
。