parent
8895a66a2b
commit
40d61743b9
|
@ -38,6 +38,7 @@ import org.springframework.security.web.PortResolver;
|
|||
import org.springframework.security.web.util.UrlUtils;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
/**
|
||||
* Represents central information from a {@code HttpServletRequest}.
|
||||
|
@ -372,10 +373,8 @@ public class DefaultSavedRequest implements SavedRequest {
|
|||
if (queryString == null || queryString.length() == 0) {
|
||||
return matchingRequestParameterName;
|
||||
}
|
||||
if (queryString.endsWith("&")) {
|
||||
return queryString + matchingRequestParameterName;
|
||||
}
|
||||
return queryString + "&" + matchingRequestParameterName;
|
||||
return UriComponentsBuilder.newInstance().query(queryString).replaceQueryParam(matchingRequestParameterName)
|
||||
.queryParam(matchingRequestParameterName).build().getQuery();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -122,4 +122,14 @@ public class DefaultSavedRequestTests {
|
|||
assertThat(new URL(savedRequest.getRedirectUrl())).hasQuery("foo=bar&success");
|
||||
}
|
||||
|
||||
// gh-13438
|
||||
@Test
|
||||
public void getRedirectUrlWhenQueryAlreadyHasSuccessThenDoesNotAdd() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setQueryString("foo=bar&success");
|
||||
DefaultSavedRequest savedRequest = new DefaultSavedRequest(request, new MockPortResolver(8080, 8443),
|
||||
"success");
|
||||
assertThat(savedRequest.getRedirectUrl()).contains("foo=bar&success");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue