ignore Multipart requests in HttpSessionRequestCache.requestMatcher
This commit is contained in:
+14
-12
@@ -142,22 +142,12 @@ public final class RequestCacheConfigurer<H extends HttpSecurityBuilder<H>> exte
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private RequestMatcher createDefaultSavedRequestMatcher(H http) {
|
private RequestMatcher createDefaultSavedRequestMatcher(H http) {
|
||||||
ContentNegotiationStrategy contentNegotiationStrategy = http
|
|
||||||
.getSharedObject(ContentNegotiationStrategy.class);
|
|
||||||
if (contentNegotiationStrategy == null) {
|
|
||||||
contentNegotiationStrategy = new HeaderContentNegotiationStrategy();
|
|
||||||
}
|
|
||||||
|
|
||||||
RequestMatcher notFavIcon = new NegatedRequestMatcher(new AntPathRequestMatcher(
|
RequestMatcher notFavIcon = new NegatedRequestMatcher(new AntPathRequestMatcher(
|
||||||
"/**/favicon.*"));
|
"/**/favicon.*"));
|
||||||
|
|
||||||
MediaTypeRequestMatcher jsonRequest = new MediaTypeRequestMatcher(
|
|
||||||
contentNegotiationStrategy, MediaType.APPLICATION_JSON);
|
|
||||||
jsonRequest.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL));
|
|
||||||
RequestMatcher notJson = new NegatedRequestMatcher(jsonRequest);
|
|
||||||
|
|
||||||
RequestMatcher notXRequestedWith = new NegatedRequestMatcher(
|
RequestMatcher notXRequestedWith = new NegatedRequestMatcher(
|
||||||
new RequestHeaderRequestMatcher("X-Requested-With", "XMLHttpRequest"));
|
new RequestHeaderRequestMatcher("X-Requested-With", "XMLHttpRequest"));
|
||||||
|
|
||||||
@@ -169,9 +159,21 @@ public final class RequestCacheConfigurer<H extends HttpSecurityBuilder<H>> exte
|
|||||||
matchers.add(0, getRequests);
|
matchers.add(0, getRequests);
|
||||||
}
|
}
|
||||||
matchers.add(notFavIcon);
|
matchers.add(notFavIcon);
|
||||||
matchers.add(notJson);
|
matchers.add(notMatchingMediaType(http, MediaType.APPLICATION_JSON));
|
||||||
matchers.add(notXRequestedWith);
|
matchers.add(notXRequestedWith);
|
||||||
|
matchers.add(notMatchingMediaType(http, MediaType.MULTIPART_FORM_DATA));
|
||||||
|
|
||||||
return new AndRequestMatcher(matchers);
|
return new AndRequestMatcher(matchers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private RequestMatcher notMatchingMediaType(H http, MediaType mediaType) {
|
||||||
|
ContentNegotiationStrategy contentNegotiationStrategy = http.getSharedObject(ContentNegotiationStrategy.class);
|
||||||
|
if (contentNegotiationStrategy == null) {
|
||||||
|
contentNegotiationStrategy = new HeaderContentNegotiationStrategy();
|
||||||
|
}
|
||||||
|
|
||||||
|
MediaTypeRequestMatcher jsonRequest = new MediaTypeRequestMatcher(contentNegotiationStrategy, mediaType);
|
||||||
|
jsonRequest.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL));
|
||||||
|
return new NegatedRequestMatcher(jsonRequest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user