我们使用的是Spring安全版4.2.3,
我想通过login
配置GET
过滤器。 (默认情况下,使用http://127.0.0.1/login
http方法调用GET
会返回404
。)
为此,我扩展UsernamePasswordAuthenticationFilter
以配置我自己的过滤器,并将其配置如下
<beans:bean id="myUsernamePasswordAuthenticationFilter"
class="foo.bar.MyUsernamePasswordAuthenticationFilter">
<beans:property name="authenticationManager" ref="authenticationManager"/>
<beans:property name="postOnly" value="false"/>
</beans:bean>
以及
<http entry-point-ref="authenticationEntryPoint">
<custom-filter before="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter"/>
......
不行!
在调试期间,我发现UsernamePasswordAuthenticationFilter
构造函数中存在一条硬编码行,如下所示:
public UsernamePasswordAuthenticationFilter() {
super(new AntPathRequestMatcher("/login", "POST"));
}
我认为,这导致AntPathRequestMatcher.matches
始终返回false
我可以通过login
配置GET
过滤器。那么调用http://127.0.0.1/login/username=foo&bar=bar
会被处理吗?!怎么样?