通过GET使spring`login`过滤器可用

时间:2017-11-29 04:43:45

标签: java spring spring-security

我们使用的是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会被处理吗?!怎么样?

0 个答案:

没有答案