我有类似"accessTo" = ["123", "123-edit"]的主题
"interestedId" = "123"之类的资源

现在,我尝试编写一个条件-在其中检查与“ -Access”中的“ -edit”串联的“ interestedId”等于“ 123-edit”。

我试图写这样的规则

anyOfAny_xacml1(function[stringEqual], "accessTo", "interestedId"+"-edit")


不允许这样做。

任何帮助表示赞赏。

最佳答案

除了Keerthi S的答案...

如果您知道interestedId应该只有一个值,则可以这样做以防止发生不确定的情况:

stringBagSize(interestedId) == 1 && anyOfAny(function[stringEqual], accessTo, stringOneAndOnly(interestedId) + "-edit")

如果存在多个值,则评估将在达到仅期望一个值的功能之前停止。如果存在多个值,则此条件将返回false。

另一方面,如果interestedId可以具有多个值,则可以使用:

anyOfAny(function[stringEqual], accessTo, map(function[stringConcatenate],interestedId, "-edit"))

map函数会将stringConcatenate函数应用于包中的所有值。

08-26 01:14