我有一个带有用户名和密码的Spring登录表单,它指向/ myapp/j_spring_security_check.
我希望在Spring收到请求之前有人提交登录表单时拦截表单提交.
基本上,我希望能够查看用户输入以查看它是否满足某些要求.如果没有,应用程序将把用户带回登录表单.如果用户输入符合要求,则流程将转至Spring身份验证.
我怎样才能做到这一点?以有效的方式?
谢谢!
您可以使用常规 Spring Security 功能来完成此操作。步骤是:
实施自定义WebAuthenticationDetailsSource和WebAuthenticationDetails. 将WebAuthenticationDetails捕获您想要验证的额外表单字段。
注意:在 Spring 3.0 中,您需要使用 BeanPostProcessor 将其配置WebAuthenticationDetailsSource到UsernamePasswordAuthenticationFilter. 在 Spring 3.1 中,您可以直接在<form-login>名称空间配置中执行此操作。
实现自定义AuthenticationProvider并authenticate()检查WebAuthenticationDetails,如果验证失败则抛出异常AuthenticationException。在您的登录页面中检查此异常。
或者,您可以创建一个Filter来执行验证并将其添加到 Spring Security 过滤器之前。
| 归档时间: |
|
| 查看次数: |
4821 次 |
| 最近记录: |