Grails Shiro标记中的OR条件

Grails Shiro标记中的OR条件,grails,tags,shiro,Grails,Tags,Shiro,我正在做一个两级菜单,如果用户有某些权限,我想显示一些条目 如果用户没有任何其他子菜单的权限,我不想显示菜单的第一级,因为它将显示一个空的结果列表 我将放一些代码来更好地解释它。这可能是菜单的一个示例: <ul> <shiro:hasPermission permission="foo"> <li> foo</li> </shiro:hasPermission> <shiro:hasPerm

我正在做一个两级菜单,如果用户有某些权限,我想显示一些条目

如果用户没有任何其他子菜单的权限,我不想显示菜单的第一级,因为它将显示一个空的结果列表

我将放一些代码来更好地解释它。这可能是菜单的一个示例:

<ul>
    <shiro:hasPermission permission="foo">
        <li> foo</li>
    </shiro:hasPermission>
    <shiro:hasPermission permission="bar">
        <li> bar</li>
    </shiro:hasPermission>
</ul>

有了这一点,您就可以做到这一点,有几种方法,但Shiro插件中的
hasAnyRole
标签可能是最简单的方法

<shiro:hasAnyRole in="foo,bar">

<ul>
    <shiro:hasPermission permission="foo">
        <li> foo</li>
    </shiro:hasPermission>
    <shiro:hasPermission permission="bar">
        <li> bar</li>
    </shiro:hasPermission>
</ul>

</shiro:hasAnyRole>

  • 酒吧
有关更多信息,请查看标记库的

更新

根据提供的注释,还有另一个基于权限的选项

<g:set var="hasSomePermission" value="${false}" />
<shiro:hasPermission permission="foo">
  <g:set var="hasSomePermission" value="${true}" />
</shiro:hasPermission>
<shiro:hasPermission permission="bar">
  <g:set var="hasSomePermission" value="${true}" />
</shiro:hasPermission>
...
<g:if test="${hasSomePermission}">
...
</g:if>

...
...

Shiro插件不像角色那样为权限提供逻辑或标记,因此上面是另一种方法。使用同样的想法,您可以使用自己的标记库将其干涸。

我现在就是这样做的,但我希望有一种方法可以仔细查看用户权限,而不是用户角色。类似hasAnyPermission的内容(不存在)
<g:set var="hasSomePermission" value="${false}" />
<shiro:hasPermission permission="foo">
  <g:set var="hasSomePermission" value="${true}" />
</shiro:hasPermission>
<shiro:hasPermission permission="bar">
  <g:set var="hasSomePermission" value="${true}" />
</shiro:hasPermission>
...
<g:if test="${hasSomePermission}">
...
</g:if>