我有一个带有用户名和密码的 Spring 登录表单,它指向/myapp/j_spring_security_check。
我希望在Spring收到请求之前有人提交登录表单时拦截表单提交。
基本上,我希望能够审查用户输入以查看它是否满足某些要求。如果没有,应用程序会将用户带回登录表单。如果用户输入满足要求,则流程转到 Spring 身份验证。
我怎样才能做到这一点?以一种有效的方式?
谢谢!
最佳答案
您可以使用常规的 Spring Security 功能来做到这一点。步骤是:
WebAuthenticationDetailsSource
和 WebAuthenticationDetails
. WebAuthenticationDetails
将捕获您要验证的额外表单字段。注:在 Spring 3.0 中,您需要 use a BeanPostProcessor to configure
WebAuthenticationDetailsSource
进UsernamePasswordAuthenticationFilter
.在 Spring 3.1 中,您可以直接在 <form-login>
中执行此操作命名空间配置AuthenticationProvider
并在 authenticate()
检查 WebAuthenticationDetails
,扔了一个 AuthenticationException
如果验证失败。在您的登录页面中检查此异常。 或者,您可以创建一个
Filter
进行验证并将其添加到 Spring Security 过滤器之前。
关于spring-security - 如何在 Spring 获取之前捕获 Spring Security 登录表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028532/