복붙노트

[SPRING] 봄 보안 - 특정 URL 패턴에서 캐시 제어를 제거하는 방법

SPRING

봄 보안 - 특정 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을 특정 URL이나 Content-Type 같은 이미지에 어떻게 적용 할 수 있습니까?

RegexRequestMatcher를 사용하여 이미 시도했지만 작동하지 않습니다.

// For cache
        http.requestMatcher(new RegexRequestMatcher("/page/", "GET"))
                .headers().defaultsDisabled()
                .cacheControl()
                .and().frameOptions();

이 기사는 SpringSecurityResponseHeaders를 읽었지만이 경우에는 샘플이 없습니다.

감사.

추신 즉, 특정 URL 및 리소스에 대한 SpringSecurity 기본값을 제거하려고합니다.

해결법

  1. ==============================

    1.여러 WebSecurityConfigurerAdapter를 갖는 것은 어떻습니까? 하나의 어댑터는 특정 URL에 대한 캐시 제어를 가질 수 있고 다른 어댑터는 해당 URL에 대해 캐시 제어를 사용할 수 없습니다.

    여러 WebSecurityConfigurerAdapter를 갖는 것은 어떻습니까? 하나의 어댑터는 특정 URL에 대한 캐시 제어를 가질 수 있고 다른 어댑터는 해당 URL에 대해 캐시 제어를 사용할 수 없습니다.

  2. ==============================

    2.필터로 해결했습니다. 아래는 AbstractAnnotationConfigDispatcherServletInitializer를 구현 한 부분입니다. onStartup 메서드 오버라이드 (override)입니다.

    필터로 해결했습니다. 아래는 AbstractAnnotationConfigDispatcherServletInitializer를 구현 한 부분입니다. onStartup 메서드 오버라이드 (override)입니다.

    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/*" :)
    }
    

    내가 한 일은 UrlPatterns 매핑에서 image / *를 제거하는 것이다. 귀하의 답변에 감사드립니다!

  3. from https://stackoverflow.com/questions/42638687/spring-security-how-to-remove-cache-control-in-certain-url-pattern by cc-by-sa and MIT license