저는이 문제에 대해 지금 당분간 고민하고 있습니다. 그것에 대해 여러 게시물을 찾았지만 아무도 내 문제를 해결하지 못했습니다. 그것은 아마 SecurityContext에 특정 스레드에 boud하지만 그렇다하더라도 내가 그것을 해결하는 방법을 모른다는 사실과 함께 할 수있는 뭔가가됩니다스프링 보안 - taglib 및 jsp에서는 SecurityContext.authentication null이지만 컨트롤러에서는 okock
에 로그온 한 사용자가 검색하는 코드를 다음 고려 :
을SecurityContextHolder.getContext().getAuthentication().getPrincipal()
컨트롤러에서이 코드를 실행하면 로그인 한 사용자가 올바르게 반환됩니다. taglib 또는 jsp에서이 코드를 실행하면 NPE (인증 = null)가 throw됩니다. 스프링 태그 도 작동하지 않습니다 (아마도 같은 이유로). web.xml 파일에서
추출 :
<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>
이 조건을 생성하는 샘플 JSP를 볼 수 있습니까? 페이지 헤더에 Spring Security taglib을 가져오고 있습니까? – Gandalf