如果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/