Ошибка при использовании тега авторизации Spring, чтобы проверить, вошел ли пользователь в систему?

Попытка проверить, зарегистрирован ли пользователь. Я использую следующий код:

<%@ 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)

Ответы

Ответ 1

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

<http use-expressions="true"> См. Spring Документ безопасности

Ответ 2

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

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

<beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/>