From 07bfe371b456bb80de4071719eeec9d02bc7fb82 Mon Sep 17 00:00:00 2001 From: Vishnutheep B Date: Mon, 9 Mar 2026 00:36:31 +0530 Subject: [PATCH] Fix CookieRequestCache parameters Previously the parameters were not restored. This commit ensures the parameters are restored. Closes gh-18204 Signed-off-by: Vishnutheep B --- .../web/savedrequest/CookieRequestCache.java | 1 + .../web/savedrequest/CookieRequestCacheTests.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/web/src/main/java/org/springframework/security/web/savedrequest/CookieRequestCache.java b/web/src/main/java/org/springframework/security/web/savedrequest/CookieRequestCache.java index 297dea8bb7..c3cea8fca6 100644 --- a/web/src/main/java/org/springframework/security/web/savedrequest/CookieRequestCache.java +++ b/web/src/main/java/org/springframework/security/web/savedrequest/CookieRequestCache.java @@ -91,6 +91,7 @@ public class CookieRequestCache implements RequestCache { .setServerPort(port) .setMethod(request.getMethod()) .setLocales(Collections.list(request.getLocales())) + .setParameters(request.getParameterMap()) .build(); } diff --git a/web/src/test/java/org/springframework/security/web/savedrequest/CookieRequestCacheTests.java b/web/src/test/java/org/springframework/security/web/savedrequest/CookieRequestCacheTests.java index ca8ea2cf19..8862e5ca94 100644 --- a/web/src/test/java/org/springframework/security/web/savedrequest/CookieRequestCacheTests.java +++ b/web/src/test/java/org/springframework/security/web/savedrequest/CookieRequestCacheTests.java @@ -108,6 +108,21 @@ public class CookieRequestCacheTests { assertThat(savedRequest.getRedirectUrl()).isEqualTo(redirectUrl); } + @Test + public void getRequestWhenRequestContainsSavedRequestCookieThenSavedRequestContainsRequestParameters() { + CookieRequestCache cookieRequestCache = new CookieRequestCache(); + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setCookies(new Cookie(DEFAULT_COOKIE_NAME, encodeCookie("https://abc.com/destination"))); + request.setParameter("single", "first"); + request.addParameter("multi", "second"); + request.addParameter("multi", "third"); + SavedRequest savedRequest = cookieRequestCache.getRequest(request, new MockHttpServletResponse()); + assertThat(savedRequest).isNotNull(); + assertThat(savedRequest.getParameterValues("single")).containsExactly("first"); + assertThat(savedRequest.getParameterValues("multi")).containsExactly("second", "third"); + assertThat(savedRequest.getParameterMap()).containsKeys("single", "multi"); + } + @Test public void matchingRequestWhenRequestDoesNotContainSavedRequestCookieThenReturnsNull() { CookieRequestCache cookieRequestCache = new CookieRequestCache();