11

如果用户没有特定角色,我想阻止图像具有链接。例如

<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 呢?任何帮助将不胜感激。

4

2 回答 2

29

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

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

也可以看看:

于 2012-06-08T18:45:19.117 回答
6

如果您有很多文件要更新,我建议使用正则表达式进行搜索和替换

寻找

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

用。。。来代替

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

并搜索

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

用。。。来代替

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

希望这可以节省您的时间

于 2017-04-02T06:53:05.830 回答