spring 安全 - 如何在某些 url 模式中删除缓存控制
spring security - how to remove cache control in certain url pattern
我正在尝试过滤某些 url 模式以进行缓存。
我尝试的是将一些代码放入 WebSecurityConfigurerAdapter
实现中。
@Override
protected void configure(HttpSecurity http) throws Exception {
initSecurityConfigService();
// For cache
http.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
securityConfigService.configure(http,this);
}
但是,此代码将影响所有 Web 应用程序。我如何将其应用于某些 URL
或 Content-Type
,例如 images
.
我已经尝试过 RegexRequestMatcher
,但它对我不起作用。
// For cache
http.requestMatcher(new RegexRequestMatcher("/page/", "GET"))
.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
我读过这篇文章:SpringSecurityResponseHeaders,但没有针对此案例的示例。
谢谢。
P.S。简而言之,我想删除某些 url 和资源的 SpringSecurity defaults
。
拥有多个 WebSecurityConfigurerAdapter 怎么样?一个适配器可以对某些 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/*" :)
}
我所做的是从 MappingUrlPatterns 中删除 /image/*
。
感谢您的回答!
我正在尝试过滤某些 url 模式以进行缓存。
我尝试的是将一些代码放入 WebSecurityConfigurerAdapter
实现中。
@Override
protected void configure(HttpSecurity http) throws Exception {
initSecurityConfigService();
// For cache
http.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
securityConfigService.configure(http,this);
}
但是,此代码将影响所有 Web 应用程序。我如何将其应用于某些 URL
或 Content-Type
,例如 images
.
我已经尝试过 RegexRequestMatcher
,但它对我不起作用。
// For cache
http.requestMatcher(new RegexRequestMatcher("/page/", "GET"))
.headers().defaultsDisabled()
.cacheControl()
.and().frameOptions();
我读过这篇文章:SpringSecurityResponseHeaders,但没有针对此案例的示例。
谢谢。
P.S。简而言之,我想删除某些 url 和资源的 SpringSecurity defaults
。
拥有多个 WebSecurityConfigurerAdapter 怎么样?一个适配器可以对某些 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/*" :)
}
我所做的是从 MappingUrlPatterns 中删除 /image/*
。
感谢您的回答!