我想根据'groupmembership'标题属性检查登录用户的授权。
的输出
<logger level="INFO" message="groups are =#[message.inboundProperties['GROUPMEMBERSHIP']]" doc:name="Logger"/> is
[groups are =cn=ZZZ-XXXX-Write-Users,ou= ZZZ-XXXX,ou=1234,ou=Groups,dc=someone,dc=net]
现在用户可以拥有多个群组成员资格,但我有兴趣检查用户是否是“ZZZ-XXXX-Write-Users”的成员?
MEL中是否有办法检查,例如
<when expression="#[message.inboundProperties.GROUPMEMBERSHIP.cn != ' ZZZ-XXXX-Write-Users ']">
这是正确的做法还是我错过了什么?
答案 0 :(得分:2)
您描述的场景看起来更像是流量控制的东西。 在这种情况下,我会说你只在选择路由器中使用MEL表达式:
<choice doc:name="Choice">
<when expression="#[!message.inboundProperties.GROUPMEMBERSHIP.cn.equals('ZZZ-XXXX-Write-Users')]">
<!-- DO SOMETHING -->
</when
<otherwise>
<!-- DO SOMETHING ELSE -->
</otherwise>
</choice>
使用equals来比较字符串只是一个小小的变化;)。
另一个选项,就像我们在这里谈论流量控制一样,是一个过滤器。 如果表达式未计算为true,则表达式过滤器将忽略该消息。对此的看法是,无论是否通过,您都无法使用备用路由,甚至没有日志消息说消息已被过滤。
<expression-filter expression="#[!message.inboundProperties.GROUPMEMBERSHIP.cn.equals('ZZZ-XXXX-Write-Users')]" doc:name="Expression"/>
HTH