Spring Security - как убрать управление кешем по определенному шаблону URL
Я пытаюсь отфильтровать шаблон URL для кэширования. То, что я попытался, это положить некоторые коды в WebSecurityConfigurerAdapter
реализация.
@Override
protected void configure(HttpSecurity http) throws Exception {
initSecurityConfigService();
// For cache
http.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
securityConfigService.configure(http,this);
}
Однако этот код будет влиять на все веб-приложения. Как я могу применить это к определенным URL
или же Content-Type
лайк images
,
Я уже пробовал с RegexRequestMatcher
, но это не работает для меня.
// For cache
http.requestMatcher(new RegexRequestMatcher("/page/", "GET"))
.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
Я прочитал эту статью: SpringSecurityResponseHeaders, но нет примера для этого случая.
Благодарю.
PS Короче хочу удалить SpringSecurity defaults
для определенных URL и ресурсов.
2 ответа
А как насчет наличия нескольких WebSecurityConfigurerAdapters? В одном адаптере могут быть элементы управления кэшем для определенных URL-адресов, а в другом не будет включено управление кэшем для этих URL-адресов.
Я решил это с Filter
, Ниже приведена часть моей реализации AbstractAnnotationConfigDispatcherServletInitializer
, В onStartup
переопределение метода.
FilterRegistration.Dynamic springSecurityFilterChain = servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy());
if(springSecurityFilterChain != null){
springSecurityFilterChain.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/render/*", "/service/*");
// I removed pattern url "/image/*" :)
}
Что я сделал, это удалить /image/*
от MappingUrlPatterns. Спасибо за ваши ответы!