如何在Spring Security 3中添加多个自定义过滤器?

Pag*_*ini 12 java spring spring-security

我需要为FORM_LOGIN_FILTER添加两个自定义过滤器,例如

<custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter" />
<custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter2" />
Run Code Online (Sandbox Code Playgroud)

我期望过滤器序列是:
1.预定义FORM_LOGIN_FILTER
2. myUsernamePasswordAuthenticationFilter
3. myUsernamePasswordAuthenticationFilter2

但上面会导致配置错误.那么,谁知道如何编写正确的配置?谢谢!

小智 39

使用Spring CompositeFilter来包装自定义过滤器列表,然后将该过滤器放在相关位置上SecurityFilterChain.

像这样:

<bean id="customFilters" class="org.springframework.web.filter.CompositeFilter">
    <property name="filters">
        <list>
            <ref bean="myUsernamePasswordAuthenticationFilter"/>
            <ref bean="myUsernamePasswordAuthenticationFilter2"/>
        </list>
    </property>
</bean>
...
<custom-filter after="FORM_LOGIN_FILTER" ref="customFilters" />
Run Code Online (Sandbox Code Playgroud)

  • 这是问题的正确答案,应该是所选择的问题.谢谢! (3认同)

Gan*_*alf 6

做这个:

<custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter" />
<custom-filter before="BASIC_AUTH_FILTER" ref="myUsernamePasswordAuthenticationFilter2" />
Run Code Online (Sandbox Code Playgroud)

这应该把它们放在你想要的地方.