mirror of
https://github.com/spring-projects/spring-security.git
synced 2026-03-24 19:11:04 +00:00
Merge branch '7.0.x'
This commit is contained in:
commit
5100bf3db9
@ -99,11 +99,11 @@ public class HttpSessionRequestCache implements RequestCache {
|
||||
@Override
|
||||
public @Nullable HttpServletRequest getMatchingRequest(HttpServletRequest request, HttpServletResponse response) {
|
||||
if (this.matchingRequestParameterName != null) {
|
||||
if (!StringUtils.hasText(request.getQueryString())
|
||||
|| !UriComponentsBuilder.fromUriString(UrlUtils.buildRequestUrl(request))
|
||||
.build()
|
||||
.getQueryParams()
|
||||
.containsKey(this.matchingRequestParameterName)) {
|
||||
if (!StringUtils.hasText(request.getQueryString()) || !UriComponentsBuilder.newInstance()
|
||||
.query(request.getQueryString())
|
||||
.build()
|
||||
.getQueryParams()
|
||||
.containsKey(this.matchingRequestParameterName)) {
|
||||
this.logger.trace(
|
||||
"matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided");
|
||||
return null;
|
||||
|
||||
@ -166,6 +166,21 @@ public class HttpSessionRequestCacheTests {
|
||||
verify(request, never()).getParameterMap();
|
||||
}
|
||||
|
||||
// gh-16656
|
||||
@Test
|
||||
public void getMatchingRequestWhenMatchingRequestPathContainsPercentSignThenLookedUp() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setServletPath("/30 % off");
|
||||
HttpSessionRequestCache cache = new HttpSessionRequestCache();
|
||||
cache.saveRequest(request, new MockHttpServletResponse());
|
||||
MockHttpServletRequest requestToMatch = new MockHttpServletRequest();
|
||||
requestToMatch.setServletPath("/30 % off");
|
||||
requestToMatch.setQueryString("continue");
|
||||
requestToMatch.setSession(request.getSession());
|
||||
HttpServletRequest matchingRequest = cache.getMatchingRequest(requestToMatch, new MockHttpServletResponse());
|
||||
assertThat(matchingRequest).isNotNull();
|
||||
}
|
||||
|
||||
private static final class CustomSavedRequest implements SavedRequest {
|
||||
|
||||
private final SavedRequest delegate;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user