【发布时间】:2010-05-27 21:22:09
【问题描述】:
我发现标签 <sec:IfAnyGranted roles="ROLE_ADMIN" > 被忽略,在 .xhtml 页面上我收到以下消息:
The attribute **roles** is not defined in Component's interface
【问题讨论】:
我发现标签 <sec:IfAnyGranted roles="ROLE_ADMIN" > 被忽略,在 .xhtml 页面上我收到以下消息:
The attribute **roles** is not defined in Component's interface
【问题讨论】:
标准的 Spring Security taglib 不适用于 JSF。
您可以使用the Facelets version。
然后你可以在表达式中使用sec:ifAnyGranted() 函数(不是标签):
<p:menubar xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:sec="http://www.springframework.org/security/facelets/tags">
...
<p:submenu label="#{msgs['menu.report']}"
rendered="#{sec:ifAnyGranted('ROLE_ADMIN, ROLE_REPORTER')}">
这是一段工作代码,它显示一个仅用于给定用途的菜单。 请注意,我不使用the default Spring JSP taglib,而是使用 Facelets 版本。
【讨论】: