我正在使用Spring MVC和Spring Security(均为3.0.5)实现REST服务。我正在使用安全命名空间而不是手动定义Spring bean。 我在登录过程中遇到了一些困难。我想要实现的是:
对/ login URL的POST将开始身份验证过程。
应该没有实际的表单,所以我没有使用 form-login ... 元素。如果没有这个元素,安全链上就不会出现 UsernamePasswordAuthenticationFilter ,所以我想我会通过 custom-filter ... 元素添加它,然后继续那里。
这是它的要点,而不是问题:
感谢任何反馈。 谢谢。
答案 0 :(得分:2)
通常,如果要自定义身份验证,则应使用bean配置。我发现基于命名空间的配置仅适用于演示应用程序。以下是我对你的问题的回答:
1)正如我上面所说,你应该使用豆子。查看此文章以获取更多信息:
http://blog.springsource.com/2010/03/06/behind-the-spring-security-namespace/
但是你所追求的目标也会起作用,满足你到目前为止所提到的要求
2)应该这样添加:
<http>
<custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
</http>
<beans:bean id="myFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"/>
3)请注意,此过滤器还将执行默认重定向到原始请求。因此,如果您不需要任何重定向,只需将简单的HTTP 200返回给客户端,您就应该实现自己的AuthenticationProcessingFilter。
我希望它有所帮助。