我正在使用 Spring MVC 和 Spring Security(均为 3.0.5)实现 REST 服务。我使用的不是手动定义 Spring bean 的安全命名空间。
我在登录过程中遇到了一些困难。我想要实现的是:
对/login URL 的 POST 将开始身份验证过程。
应该没有实际的表单,所以我没有使用 form-login... 元素。如果没有这个元素,UsernamePasswordAuthenticationFilter 就不会出现在安全链上,所以我想我会通过自定义过滤器...元素添加它,然后从那里继续。
这就是它的要点,而不是问题:
任何反馈表示赞赏。
谢谢。
最佳答案
一般来说,如果你想自定义你的身份验证,你应该使用 bean 配置。我发现基于命名空间的配置仅适用于演示应用程序。以下是我对您问题的回答:
1)正如我上面所说,你应该使用bean。查看这篇文章了解更多信息:
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。
我希望它有帮助。
关于authentication - REST 服务的基于 Spring Security 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855752/