我发现标记<sec:IfAnyGranted roles="ROLE_ADMIN" >
被忽略,在.xhtml
页面上我收到以下消息:
The attribute **roles** is not defined in Component's interface
答案 0 :(得分:2)
标准的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版本。