2017-03-07 55 views
2

我想過濾一些網址格式緩存。 我所嘗試的是將一些代碼放入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.總之,我想爲某些網址和資源刪除SpringSecurity defaults

+0

也許我不明白你的問題。既然你想爲一般的請求添加緩存控制,爲什麼Spring Security會涉及這個?你可以嘗試添加一個過濾器嗎? – Simon

+0

@Simon安全性默認設置應該適用於一般性調用,但我只希望該選項只適用於'image/*'類型。這就是爲什麼我想分開這些選項。 –

+0

我明白這一點,但對我來說,這是非常簡單的過濾器,你可以設置一些url模式(在你的情況下圖像/ *)來過濾。您只需在響應中設置一些標題,然後設置所有內容。如果你更喜歡Spring Security,它有過濾鏈,你只需在最後一個過濾器後面添加一個過濾器並設置響應 – Simon

回答

1

如何擁有多個WebSecurityConfigurerAdapter?一個適配器可以對某些URL使用高速緩存控件,而另一個適配器則不會爲這些URL啓用高速緩存控制。

+1

這是幫助他人的附加信息。要擁有多個'WebSecurityConfigurerAdapter',必須修改implements的'@ Order'。默認值是隱藏的,但值是'100',不能重複。可以參考這個[doc](http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter.html) –

0

我用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/*。 感謝您的回答!

+1

有另一種常規方式來做到這一點。使用['WebSecurity#忽略'](http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/config/annotation/web/builders/WebSecurity.html#ignoring - )。 – dur

+0

@dur謝謝。那是我尋找的。 BB –