java - 如何让 Spring Security 不绕过 Controller 登录映射?

标签 java spring authentication spring-mvc spring-security

如果login.jsp发布到/login/submit:

<form action="/login/submit" method="post">

并且applicationContext.xml定义了一个form-login元素:

<form-login login-page="/login" login-processing-url="/login/submit" authentication-failure-url="/login/error" />   

如何在相应的 Controller 方法中进行一些额外的处理:

@RequestMapping(value = "/login/submit", method = RequestMethod.POST)

我定义了这样一个方法,但 Spring Security 在 login.jsp 发布其表单时从不调用它。而是调用 loadUserByUsername 并处理不使用此 Controller 方法即可成功验证。

最佳答案

我同意@stevels 和@ericacm。需要更多信息才能告诉您对于您想要实现的目标来说最佳选择是什么。

永远不会调用 Controller 方法,因为您可能知道,Spring Security 登录表单例份验证发生在过滤器中:UsernamePasswordAuthenticationFilter 。当此过滤器成功验证表单后,请求将转发到目标 url。 (如果身份验证失败,则跳转到登录错误页面)。

当您想要修改某些默认的身份验证行为时,您很可能希望从此过滤器开始。不要害怕单步执行代码!

关于java - 如何让 Spring Security 不绕过 Controller 登录映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127857/

相关文章:

java - 如何设置 Intellij 在实例变量不存在 "this"时发出警报

spring - 通过 Spring Data ElasticSearch 将 Spring Data JPA 条目批量索引到 Elastic

javascript - 以经过身份验证的用户身份读取 Azure 移动服务表时出现 401 未经授权错误 (Javascript)

iis - 无法让 IIS ISAPI Tomcat 连接器将 BASIC 身份验证传递给 Tomcat

适用于 Ubuntu 的 Java NFC 标签应用程序

java - 想要使用 32 字节的 AES 256 CBC 但它显示 java.security.InvalidAlgorithmParameterException

java - 如何在 spring-boot 中启用 TaskScheduler?

java - jdbcTemplate执行完查询后如何在Spring Boot中关闭连接?

c# - 如何在代码隐藏中操作我的 Site.Master 文件中的文本

java - 是否可以重新部署?