如何使用pattern / **创建Spring身份验证过滤器

时间:2015-02-20 22:22:32

标签: authentication spring-security servlet-filters

<sec:http auto-config="false" use-expressions="true" pattern="/**" 
    authentication-manager-ref="authenticationManager" entry-point-ref="authenticationEntryPoint">
    <sec:custom-filter ref="myFilter" position="BASIC_AUTH_FILTER" />
    <sec:intercept-url pattern="/**" access="permitAll" />
</sec:http>

HI, 

我试图做的事情似乎很简单,但我一直试图弄清楚如何做好几个小时。希望有人可以提供帮助。

我只想创建一个身份验证过滤器,拦截所有传入的请求,进行一些处理,然后将其传递给链中的下一个过滤器。

当我尝试使用/ 的pttern时,我会继续收到错误&#34;通用匹配模式(&#39; / &#39;)在其他之前定义过滤器链中的模式,导致它们被忽略。请检查命名空间或FilterChainProxy bean配置中的顺序&#34;即使我已经尝试了各种各样的事情,比如保证我的过滤器是security.xml文件中列出的最后一个过滤器。我甚至试图使用filterChainProxy定义来指定顺序,如下所示:

<beans:bean id="filterChainProxy"
    class="org.springframework.security.web.FilterChainProxy">
    <sec:filter-chain-map>
        <sec:filter-chain pattern="/**"
            filters="<filterlist, with mine being the very last!>" />
    </sec:filter-chain-map>
</beans:bean>

似乎没有什么工作,尽管花了几个小时研究和谷歌搜索试图弄清楚,所以我放弃了,并在web.xml文件中为我的过滤器创建了一个条目。最后,我在过滤器中遇到了一个断点,所以我知道它被调用了。但后来我遇到的问题是,没有任何东西被Spring注入,我假设是因为我在框架之外去了#34;而且,我甚至无法拉动经过身份验证的用户,我得到一个Spring错误,说我没有经过身份验证,但是在security.xml中定义的其他过滤器可以很好地完成它。

我不知道该怎么做;非常惊讶的东西如此简单是如此困难。

请告知,谢谢

0 个答案:

没有答案