Estoy teniendo problemas para mostrar un vínculo de cierre de sesión en una página JSP sólo si el usuario es autenticado. Aquí es la excepción que tengo en esta línea de la página JSP:Spring Security - Ningún caso WebSecurityExpressionHandler visible se pudo encontrar en el contexto de aplicación
<sec:authorize access="isAuthenticated()">
Excepción:
Stacktrace:
....
root cause
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.
org.springframework.security.taglibs.authz.AuthorizeTag.getExpressionHandler(AuthorizeTag.java:100)
org.springframework.security.taglibs.authz.AuthorizeTag.authorizeUsingAccessExpression(AuthorizeTag.java:58)
aquí es mi contexto de aplicación security.xml:
<http auto-config='true' >
<intercept-url pattern="/user/**" access="ROLE_User" />
<logout logout-success-url="/hello.htm" />
</http>
<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService" />
</beans:bean>
<beans:bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<beans:property name="providers">
<beans:list>
<beans:ref local="daoAuthenticationProvider" />
</beans:list>
</beans:property>
</beans:bean>
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="plaintext" />
</authentication-provider>
</authentication-manager>
entiendo que podría usar use-expression = "true" en la etiqueta http pero eso significa que tendría que usar expression en las etiquetas intercept-url y en el código java. ¿Hay alguna solución?
Una observación no relacionado. El 'daoAuthenticationProvider' y' authenticationManager' en su configuración no se están utilizando. –