Я считаю, что тег <sec:IfAnyGranted roles="ROLE_ADMIN" > игнорируется, и на странице .xhtml появляется следующее сообщение:
<sec:IfAnyGranted roles="ROLE_ADMIN" >
.xhtml
The attribute **roles** is not defined in Component's interface
Стандартная библиотека тегов Spring Security не работает с JSF.
Вы можете использовать версию Facelets .
Тогда вы можете использовать функцию sec:ifAnyGranted() (не тег) внутри выражения:
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')}">
Это рабочий код, который показывает меню только для данного использования. Обратите внимание, что я не использую стандартную библиотеку Spring JSP taglib , но версию Facelets.