2013-02-27 82 views
1

我不知道有關的FilterChainProxy,我有春天的安全在我的應用程序工作正常,但我需要加載ConfigAttributes從屬性文件..Spring Security filterChainProxy?!?!聲明所有過濾器只使用一個自定義過濾器?

我知道我需要去創建類實現FilterInvocationSecurityMetadataSource ..然後我做到了..之後

當我讀到這個..我的文檔我要聲明filterchaeinProxy在應用程序上下文XML ..這樣在看到..

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy"> 
    <constructor-arg> 
    <list> 
     <sec:filter-chain pattern="/**" filters=" 
      securityContextPersistenceFilterWithASCTrue, 
      formLoginFilter, 
      exceptionTranslationFilter, 
      filterSecurityInterceptor" /> 
    </list> 
    </constructor-arg> 
</bean> 

我真的需要申報所有這些過濾器只使用一個自定義過濾器?

我只想拉我的網址,並從屬性文件中的各個角色。從文檔部分"Adding in Your Own Filters"

+0

編輯我的回答如下,以提供真正的解決辦法,即使它只是一個黑客... :) – zagyi 2013-03-01 15:48:28

回答

1

報價:

注意,你不能替換那些使用創建的過濾器<http>元件本身 - SecurityContextPersistenceFilterExceptionTranslationFilterFilterSecurityInterceptor

這就是爲什麼你必須自己定義整個鏈,如果你想自定義這三個過濾器之一。


或許這對你太晚了,但正如在這個問題上的後續:您可以應用以下不那麼漂亮的劈自定義由命名空間配置創建的FilterSecurityInterceptor,以避免手動創建整個過濾器鏈。

創建一個課程,除了在其構造函數中接收的FilterSecurityInterceptor上設置您的CustomSecurityMetadataSource之外,什麼也不做。

public class FilterSecurityInterceptorInitializer { 
    @Autowired 
    public FilterSecurityInterceptorInitializer(
      FilterSecurityInterceptor filterSecurityInterceptor, 
      CustomSecurityMetadataSource securityMetadataSource) { 
     filterSecurityInterceptor 
      .setSecurityMetadataSource(securityMetadataSource); 
    } 
} 

然後在您的背景下,這個初始化類:

<bean class="FilterSecurityInterceptorInitializer" autowire="constructor"/> 
<bean class="CustomSecurityMetadataSource"/> 
相關問題