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 应用程序。我如何将其应用于某些 URLContent-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/*。 感谢您的回答!