Доступ к управляемым компонентам JSF в теге authorize безопасности Spring

Я реализовал Spring security 4.2.3. в веб-приложении JSF-2.2, и пока он работает нормально. Теперь у меня проблема с доступом к методу bean-компонента jsf из тега авторизации Spring Security.

Это моя таблица данных xhtml, где мне нужно запретить доступ в некоторых строках в соответствии с данными элемента:

<p:dataTable var="item" value="#{itemService.items}">
    <p:column headerText="Id">
        <h:outputText value="#{item.id}" />
    </p:column>

    <p:column headerText="Name">
        <h:outputText value="#{item.name}" />
    </p:column>

    <p:column headerText="Security">
        <sec:authorize access="#{securityService.checkAccessByItemId(item.id)}">
            <h:outputLabel value="#{helloWorld.secure}"/>
        </sec:authorize>
    </p:column>
</p:dataTable>

А вот мой боб как раз для тестирования:

@ManagedBean(name="securityService")
@RequestScoped
public class SecurityService {

    public boolean checkAccessByItemId(int id) {
        if(id==5) {
            return false;
        } else {
            return true;
        }
    }
}

Вот мой taglib.xml:

<facelet-taglib>
   <namespace>http://www.springframework.org/security/tags</namespace>
    <tag>
        <tag-name>authorize</tag-name>
        <handler class>org.springframework.faces.security.FaceletsAuthorizeTagHandler</handler-class>
    </tag>
</facelet-taglib>

Я получаю это исключение:

org.springframework.expression.spel.SpelParseException: Expression [#{securityService.checkAccessByItemId(item.id)}] @1: EL1043E: Unexpected token. Expected 'identifier' but was 'lcurly({)'
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.raiseInternalException(InternalSpelExpressionParser.java:1006)

Кто-нибудь знает решение для этого?

1 ответ

Если я правильно прочитал документацию Spring-Security для тега authorize, кажется, что EL там не поддерживается (зачем вам в любом случае использовать тег authorize, если вы хотите вызывать свой собственный bean-компонент для "проверки" вещей? Просто используйте rendered атрибут на выходной ярлык тогда.

Другие вопросы по тегам