The JavaDoc on org.apache.tapestry5.service.Request states that "getSession(false)" should return NULL if the session is invalidated. This is not happening, it returns the invalidated session.

I think this is because tapestry-spring-security is using the HttpServletRequest and thus the HttpSession instead of the Tapestry Sesssion in LogoutServiceImpl. Invalidating the HttpSession does NOT invalidate the Tapestry session causing all sorts of issues. If I invalidate the Tapestry session first, then call logoutService.logout() it seems to work.

Can this be fixed in tapestry-spring-service?

Norman Franke
Answering Service for Directors, Inc.
www.myasd.com



On Aug 10, 2009, at 6:58 PM, Norman Franke wrote:

When I try to logout via tapestry-spring-security-2.1.0 (as in the example, logoutService.logout() in my event handler for the logout link), I get this error all the time:

How can I logout without error and go back to the main page?
java.lang.IllegalStateException: setAttribute: Session already invalidated org .apache .catalina.session.StandardSession.setAttribute(StandardSession.java: 1291) org .apache .catalina.session.StandardSession.setAttribute(StandardSession.java: 1256) org .apache .catalina .session .StandardSessionFacade.setAttribute(StandardSessionFacade.java:130) org .apache .tapestry5 .internal.services.SessionImpl.restoreDirtyObjects(SessionImpl.java: 129) org .apache .tapestry5 .internal .services .RestoreDirtySessionObjects .requestDidComplete(RestoreDirtySessionObjects.java:38) org .apache .tapestry5 .internal .services .EndOfRequestEventHubImpl.fire(EndOfRequestEventHubImpl.java:40) $ EndOfRequestEventHub_1230686f209 .fire($EndOfRequestEventHub_1230686f209.java) org.apache.tapestry5.services.TapestryModule $4.service(TapestryModule.java:782)
        $RequestHandler_1230686f22e.service($RequestHandler_1230686f22e.java)
org.apache.tapestry5.services.TapestryModule $3.service(TapestryModule.java:767)
        $RequestHandler_1230686f22e.service($RequestHandler_1230686f22e.java)
org .apache .tapestry5 .internal.services.StaticFilesFilter.service(StaticFilesFilter.java: 85)
        $RequestHandler_1230686f22e.service($RequestHandler_1230686f22e.java)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter $2.invoke(CheckForUpdatesFilter.java:90) org.apache.tapestry5.internal.services.CheckForUpdatesFilter $2.invoke(CheckForUpdatesFilter.java:81) org .apache .tapestry5 .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java: 85) org .apache .tapestry5 .internal .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java: 103)
        $RequestHandler_1230686f22e.service($RequestHandler_1230686f22e.java)
        $RequestHandler_1230686f221.service($RequestHandler_1230686f221.java)
org.apache.tapestry5.services.TapestryModule $HttpServletRequestHandlerTerminator.service(TapestryModule.java:197) org .apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) org .apache .tapestry5 .internal .services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) $ HttpServletRequestFilter_1230686f220 .service($HttpServletRequestFilter_1230686f220.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:109) org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:83) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f21d .service($HttpServletRequestFilter_1230686f21d.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) nu .localhost .tapestry5 .springsecurity .services .internal .SpringSecurityExceptionTranslationFilter .doFilterHttp(SpringSecurityExceptionTranslationFilter.java:100) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org .springframework .security .providers .anonymous .AnonymousProcessingFilter .doFilterHttp(AnonymousProcessingFilter.java:105) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f21c .service($HttpServletRequestFilter_1230686f21c.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org .springframework .security .wrapper .SecurityContextHolderAwareRequestFilter .doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f21b .service($HttpServletRequestFilter_1230686f21b.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org .springframework .security .ui .rememberme .RememberMeProcessingFilter .doFilterHttp(RememberMeProcessingFilter.java:116) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f21a .service($HttpServletRequestFilter_1230686f21a.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org .springframework .security .ui .AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java: 271) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f219 .service($HttpServletRequestFilter_1230686f219.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) nu .localhost .tapestry5 .springsecurity.services.internal.HttpServletRequestFilterWrapper $1.doFilter(HttpServletRequestFilterWrapper.java:56) org .springframework .security .context .HttpSessionContextIntegrationFilter .doFilterHttp(HttpSessionContextIntegrationFilter.java:235) org .springframework .security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java: 53) nu .localhost .tapestry5 .springsecurity .services .internal .HttpServletRequestFilterWrapper .service(HttpServletRequestFilterWrapper.java:52) $ HttpServletRequestFilter_1230686f218 .service($HttpServletRequestFilter_1230686f218.java) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) org.apache.tapestry5.services.TapestryModule $2.service(TapestryModule.java:726) $ HttpServletRequestHandler_1230686f223 .service($HttpServletRequestHandler_1230686f223.java) $ HttpServletRequestHandler_1230686f217 .service($HttpServletRequestHandler_1230686f217.java)
        org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)



Norman Franke
Answering Service for Directors, Inc.
www.myasd.com




Reply via email to