He estado luchando con este problema por un tiempo. Encontré varios mensajes al respecto, pero ninguno resolvió mi problema. Es probable que tenga algo que ver con el hecho de que un SecurityContext es Boud a un hilo específico, pero incluso entonces no sé cómo resolverlo:Seguridad de primavera - SecurityContext.authentication null en taglib y jsp pero está bien en el controlador
Considere siguiente código para recuperar el usuario que se registra en:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
la ejecución de este código en un controlador volvería (correctamente) que el usuario conectado. la ejecución de este código de una taglib JSP o lanza NPE (autenticación = null). También la etiqueta de resorte no funciona (presumiblemente por la misma razón).
Extracto de web.xml:
<filter>
<filter-name>AcegiFilter</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AcegiFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Extracto del muelle de archivo de configuración de seguridad:
<bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
</value>
</property>
</bean>
<bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="alwaysReauthenticate" value="true" />
<property name="objectDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/myaccount.htm=ROLE_CUSTOMER
</value>
</property>
</bean>
¿Podemos ver una muestra JSP que produce esta condición? ¿Está importando el taglib de Spring Security en el encabezado de su página? – Gandalf