HttpSessionSecurityContextRepository support null HttpServletResponse

Closes gh-11029
This commit is contained in:
Rob Winch 2022-03-25 13:01:40 -05:00
parent 759d983d62
commit 1e3106f3a2
2 changed files with 14 additions and 4 deletions

View File

@ -122,10 +122,12 @@ public class HttpSessionSecurityContextRepository implements SecurityContextRepo
this.logger.trace(LogMessage.format("Created %s", context));
}
}
SaveToSessionResponseWrapper wrappedResponse = new SaveToSessionResponseWrapper(response, request,
httpSession != null, context);
requestResponseHolder.setResponse(wrappedResponse);
requestResponseHolder.setRequest(new SaveToSessionRequestWrapper(request, wrappedResponse));
if (response != null) {
SaveToSessionResponseWrapper wrappedResponse = new SaveToSessionResponseWrapper(response, request,
httpSession != null, context);
requestResponseHolder.setResponse(wrappedResponse);
requestResponseHolder.setRequest(new SaveToSessionRequestWrapper(request, wrappedResponse));
}
return context;
}

View File

@ -133,6 +133,14 @@ public class HttpSessionSecurityContextRepositoryTests {
assertThat(request.getSession(false)).isNull();
}
@Test
public void loadContextWhenNullResponse() {
HttpSessionSecurityContextRepository repo = new HttpSessionSecurityContextRepository();
MockHttpServletRequest request = new MockHttpServletRequest();
HttpRequestResponseHolder holder = new HttpRequestResponseHolder(request, null);
assertThat(repo.loadContext(holder)).isEqualTo(SecurityContextHolder.createEmptyContext());
}
@Test
public void existingContextIsSuccessFullyLoadedFromSessionAndSavedBack() {
HttpSessionSecurityContextRepository repo = new HttpSessionSecurityContextRepository();