等效于已弃用的<sec:authorize> ifNotGranted属性</sec:authorize>

时间:2012-06-08 17:12:13

标签: jsp spring-security jsp-tags

如果用户没有某个角色,我想阻止带有链接的图片。 e.g。

<sec:authorize ifNotGranted="ROLE_ACCOUNTS" ><img src="someimage.jpg"/></sec:authorize>
<sec:authorize ifAllGranted="ROLE_ACCOUNTS" ><a href="somelink.htm"><img src="someimage.jpg"/></a></sec:authorize>

但是,现在不推荐使用ifNotGranted和ifAllGranted来支持访问表达式。我可以看到ifAllGranted可以复制:

<sec:authorize access="hasRole('ROLE_ACCOUNTS')"><a href="somelink.htm"><img src="someimage.jpg"/></a></sec:authorize>

但是如何使用访问方法复制ifNotGranted?任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:28)

使用!运算符可以取消SpEL表达式:

<sec:authorize access="!hasRole('ROLE_ACCOUNTS')">...</sec:authorize> 

另见:

答案 1 :(得分:3)

如果您要更新许多文件,我建议使用常规快递来搜索和替换

查找

<sec:authorize\s+ifAnyGranted="([^"]+)"

替换为

<sec:authorize access="hasAnyRole('$1')"

并搜索

<sec:authorize\s+ifNotGranted="([^"]+)"

替换为

<sec:authorize access="!hasAnyRole('$1')"

希望这可以节省您的时间