spring-security - 如何在 Spring 获取之前捕获 Spring Security 登录表单?

标签 spring-security

我有一个带有用户名和密码的 Spring 登录表单,它指向/myapp/j_spring_security_check。

我希望在Spring收到请求之前有人提交登录表单时拦截表单提交。

基本上,我希望能够审查用户输入以查看它是否满足某些要求。如果没有,应用程序会将用户带回登录表单。如果用户输入满足要求,则流程转到 Spring 身份验证。

我怎样才能做到这一点?以一种有效的方式?

谢谢!

最佳答案

您可以使用常规的 Spring Security 功能来做到这一点。步骤是:

  • 实现自定义 WebAuthenticationDetailsSource WebAuthenticationDetails . WebAuthenticationDetails将捕获您要验证的额外表单字段。

    注:在 Spring 3.0 中,您需要 use a BeanPostProcessor to configure WebAuthenticationDetailsSourceUsernamePasswordAuthenticationFilter .在 Spring 3.1 中,您可以直接在 <form-login> 中执行此操作命名空间配置
  • 实现自定义 AuthenticationProvider并在 authenticate()检查 WebAuthenticationDetails ,扔了一个 AuthenticationException如果验证失败。在您的登录页面中检查此异常。

  • 或者,您可以创建一个 Filter进行验证并将其添加到 Spring Security 过滤器之前。

    关于spring-security - 如何在 Spring 获取之前捕获 Spring Security 登录表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028532/

    相关文章:

    spring-boot - loadUserByUsername(String username)中的用户名参数为空-spring boot

    java - Spring Security 注解 @EnableWebSecurity 在 Spring MVC 项目中不起作用

    java - 如何读取从 IdP 接收到的 SAML 属性值?

    java - 将 csrf token 传递给客户端应用程序

    java - 在 spring boot 中使用 web socket 通知特定用户

    ajax - Grails:运行ajax请求时用户注销

    java - 仅在特定 URL 上调用自定义 Spring Security 过滤器

    java - 来自多个身份验证服务器的 OAuth2/OIDC 客户端授权的额外身份验证步骤

    java - 如何在 spring-security 中为嵌套 url 设置不同的访问权限

    java - Spring Security - 忽略请求参数规则的URL