SessionRepositoryFilter sets maxInactiveIntervalInSeconds on create

Fixes gh-324
This commit is contained in:
Rob Winch
2015-12-04 15:38:32 -06:00
parent f14942edb0
commit eb646ef5d8
2 changed files with 23 additions and 0 deletions

View File

@@ -290,6 +290,7 @@ public class SessionRepositoryFilter<S extends ExpiringSession> extends OncePerR
return null;
}
S session = sessionRepository.createSession();
session.setLastAccessedTime(System.currentTimeMillis());
currentSession = new HttpSessionWrapper(session, getServletContext());
setCurrentSession(currentSession);
return currentSession;

View File

@@ -33,6 +33,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.concurrent.TimeUnit;
import javax.servlet.FilterChain;
import javax.servlet.ServletContext;
@@ -56,6 +57,7 @@ import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockServletContext;
import org.springframework.session.ExpiringSession;
import org.springframework.session.MapSession;
import org.springframework.session.MapSessionRepository;
import org.springframework.session.Session;
import org.springframework.session.SessionRepository;
@@ -114,6 +116,26 @@ public class SessionRepositoryFilterTests {
});
}
@Test
public void doFilterCreateSetsLastAccessedTime() throws Exception {
MapSession session = new MapSession();
session.setLastAccessedTime(0L);
this.sessionRepository = spy(this.sessionRepository);
when(this.sessionRepository.createSession()).thenReturn(session);
this.filter = new SessionRepositoryFilter<ExpiringSession>(sessionRepository);
doFilter(new DoInFilter() {
@Override
public void doFilter(HttpServletRequest wrappedRequest) {
HttpSession session = wrappedRequest.getSession();
long now = System.currentTimeMillis();
long fiveSecondsAgo = now - TimeUnit.SECONDS.toMillis(5);
assertThat(session.getLastAccessedTime()).isLessThanOrEqualTo(now);
assertThat(session.getLastAccessedTime()).isGreaterThanOrEqualTo(fiveSecondsAgo);
}
});
}
@Test
public void doFilterLastAccessedTime() throws Exception {
final String ACCESS_ATTR = "create";