Hello, I've been using Spring Security (1.x) with an old project with no problems, but now I have ported the security code to a new project, with Spring Security 2.0.5, and seems like the tags don't work:
In my JSP:
The tags don't show anything, and if I debug through the source code, it's like the SecurityContext is not in the session. However, the ${SPRING_SECURITY_CONTEXT.authentication.principal .username} expression shows the correct username of the logged in user:Code:<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec"%> ... <div id="user_info"> <sec:authentication property="principal.authorities"/> <sec:authentication property="principal.lastname" /> <sec:authentication property="principal.username" /> ${SPRING_SECURITY_CONTEXT.authentication.principal.username} </div>
My Spring Security configuration is quite simple, but I don't think it has something to do with this problem:
The log seems to be normal to me:Code:<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <http auto-config="true" access-decision-manager-ref="accessDecisionManager"> <form-login login-page="/jsp/login.jsp"/> <intercept-url pattern="/index.jsp" access="ROLE_ANONYMOUS, ROLE_USER" /> <intercept-url pattern="/jsp/login.jsp" filters="none"/> <intercept-url pattern="/menu/MenuGenerator.action" access="ROLE_ANONYMOUS, ROLE_USER" /> <intercept-url pattern="/**/*.action" access="ROLE_USER" /> <intercept-url pattern="/**/*.jsp" access="ROLE_USER" /> </http> <authentication-provider user-service-ref="userService" > <password-encoder ref="passEncoder"/> </authentication-provider> <beans:bean id="passEncoder" class="org.springframework.security.providers.encoding.PlaintextPasswordEncoder"/> <beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> <beans:property name="allowIfAllAbstainDecisions" value="false"/> <beans:property name="decisionVoters"> <beans:list> <beans:bean class="com.playjam.webuser.impl.AdministratorVoter"/> <beans:bean class="org.springframework.security.vote.RoleVoter"/> <beans:bean class="org.springframework.security.vote.AuthenticatedVoter"/> </beans:list> </beans:property> </beans:bean> </beans:beans>
However this piece looks like the SecurityContext is being cleared, however not being removed from the session:Code:2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource - Converted URL to lowercase, from: '/menu/menugenerator.action'; to: '/menu/menugenerator.action' 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource - Candidate is: '/menu/menugenerator.action'; pattern is /index.jsp; matched=false 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource - Candidate is: '/menu/menugenerator.action'; pattern is /menu/menugenerator.action; matched=true 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.AbstractSecurityInterceptor - Secure object: FilterInvocation: URL: /menu/MenuGenerator.action; ConfigAttributes: [ROLE_ANONYMOUS, ROLE_USER] 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.AbstractSecurityInterceptor - Previously Authenticated: org.springframework.security.providers.UsernamePasswordAuthenticationToken@6d9d22e7: Principal: com.playjam.webuser.PlayJamUser@3ad4f000: Username: asarco; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN, ROLE_USER; Password: [PROTECTED]; Authenticated: true; Details: org.springframework.security.ui.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: DEE2653B1CEFE29CF58D47C179C1B224; Granted Authorities: ROLE_ADMIN, ROLE_USER 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.AbstractSecurityInterceptor - Authorization successful 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.intercept.AbstractSecurityInterceptor - RunAsManager did not change Authentication object 2009-12-29 16:37:47,961 [http-8080-5] DEBUG org.springframework.security.util.FilterChainProxy - /menu/MenuGenerator.action reached end of additional filter chain; proceeding with original chain
Any ideas?Code:2009-12-29 16:37:47,994 [http-8080-5] DEBUG org.springframework.security.context.HttpSessionContextIntegrationFilter - SecurityContextHolder now cleared, as request processing completed
Thanks.



