Ошибка использования Spring Authorize Tag для проверки, если пользователь вошел в систему? - PullRequest
13 голосов
/ 30 марта 2011

Пытаясь проверить, вошел ли пользователь в систему, я использую следующий код:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

<sec:authorize access="isAuthenticated()">
   YES, you are logged in!
</sec:authorize>

Но я получаю следующий erorr?

javax.servlet.jsp.JspException: No visible WebSecurityExpressionHandler instance could be found in the application context. There must be at least one in order to support expressions in JSP 'authorize' tags.
        at org.springframework.security.taglibs.authz.AuthorizeTag.getExpressionHandler(AuthorizeTag.java:100)
        at org.springframework.security.taglibs.authz.AuthorizeTag.authorizeUsingAccessExpression(AuthorizeTag.java:58)
        at org.springframework.security.taglibs.authz.AuthorizeTag.doStartTag(AuthorizeTag.java:48)

Ответы [ 2 ]

24 голосов
/ 19 июля 2011

Настройка use-expressions = "true" в элементе http будет работать, но означает, что все ваши настройки безопасности как в коде Java, так и в контексте безопасности должны использовать нотации выражений.Это может быть проблемой, если вы в настоящее время используете стандартные обозначения безопасности.

Чтобы использовать как выражения, так и стандартные обозначения, просто объявите новый bean-компонент в контексте безопасности следующим образом -

<beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/>
21 голосов
/ 30 марта 2011

Чтобы использовать выражения для защиты отдельных URL-адресов, сначала необходимо установить для атрибута use-expressions в элементе значение true

<http use-expressions="true"> См. Документ Spring Security

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...