diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java index 186092f6..be5e0320 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java @@ -75,6 +75,7 @@ import org.springframework.session.SessionRepository; * @author Rob Winch * @author Vedran Pavic * @author Josh Cummings + * @author Yanming Zhou * @since 1.0 */ @Order(SessionRepositoryFilter.DEFAULT_ORDER) @@ -222,10 +223,11 @@ public class SessionRepositoryFilter extends OncePerRequestFi } else { S session = wrappedSession.getSession(); + String requestedSessionId = getRequestedSessionId(); clearRequestedSessionCache(); SessionRepositoryFilter.this.sessionRepository.save(session); String sessionId = session.getId(); - if (!isRequestedSessionIdValid() || !sessionId.equals(getRequestedSessionId())) { + if (!isRequestedSessionIdValid() || !sessionId.equals(requestedSessionId)) { SessionRepositoryFilter.this.httpSessionIdResolver.setSessionId(this, this.response, sessionId); } } diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java index e70d0c63..1042b948 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java @@ -1327,8 +1327,8 @@ class SessionRepositoryFilterTests { } }); - // 3 invocations expected: initial resolution, after invalidation, after commit - verify(sessionRepository, times(3)).findById(eq(session.getId())); + // 2 invocations expected: initial resolution, after invalidation, after commit + verify(sessionRepository, times(2)).findById(eq(session.getId())); verify(sessionRepository).deleteById(eq(session.getId())); verify(sessionRepository).createSession(); verify(sessionRepository).save(any());