Browse Source

Save query parameters in WebSessionServerRequestCache

Previously, URL query parameters were lost when saving a request
in WebSessionServerRequestCache. Now it is properly saved and
restored.

Fixes: gh-6421
pull/6577/head
Rob Winch 7 years ago
parent
commit
f8ee28ea9f
  1. 4
      web/src/main/java/org/springframework/security/web/server/savedrequest/WebSessionServerRequestCache.java
  2. 10
      web/src/test/java/org/springframework/security/web/server/savedrequest/WebSessionServerRequestCacheTests.java

4
web/src/main/java/org/springframework/security/web/server/savedrequest/WebSessionServerRequestCache.java

@ -86,6 +86,8 @@ public class WebSessionServerRequestCache implements ServerRequestCache { @@ -86,6 +86,8 @@ public class WebSessionServerRequestCache implements ServerRequestCache {
}
private static String pathInApplication(ServerHttpRequest request) {
return request.getPath().pathWithinApplication().value();
String path = request.getPath().pathWithinApplication().value();
String query = request.getURI().getRawQuery();
return path + (query != null ? "?" + query : "");
}
}

10
web/src/test/java/org/springframework/security/web/server/savedrequest/WebSessionServerRequestCacheTests.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.security.web.server.savedrequest;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
import org.springframework.mock.web.server.MockServerWebExchange;
@ -44,6 +45,15 @@ public class WebSessionServerRequestCacheTests { @@ -44,6 +45,15 @@ public class WebSessionServerRequestCacheTests {
}
@Test
public void saveRequestGetRequestWithQueryParamsWhenGetThenFound() {
MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/secured/").queryParam("key", "value").accept(MediaType.TEXT_HTML));
this.cache.saveRequest(exchange).block();
URI saved = this.cache.getRedirectUri(exchange).block();
assertThat(saved).isEqualTo(exchange.getRequest().getURI());
}
public void saveRequestGetRequestWhenPostThenNotFound() {
MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.post("/secured/"));
this.cache.saveRequest(exchange).block();

Loading…
Cancel
Save