如何解决如何使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\" />
如何在相应的控制器方法中进行一些其他处理:
@RequestMapping(value = \"/login/submit\",method = RequestMethod.POST)
我定义了这种方法,但是当“ 6”发布其表单时,Spring Security永远不会调用它。而是调用loadUserByUsername
并成功处理身份验证,而无需使用此控制器方法。
解决方法
我同意@stevels和@ericacm。需要更多信息才能告诉您什么是您要完成的最佳选择。
永远不会调用controller方法,因为您可能知道,Spring安全性登录表单身份验证是在以下过滤器中进行的:UsernamePasswordAuthenticationFilter。通过此过滤器成功验证表单后,请求将转发到目标url。 (如果身份验证失败,则返回登录错误页面)。
在试图修改某些默认身份验证行为时,您很可能希望从此过滤器开始。不要害怕逐步执行代码!
,您可以使用称为“目标网址”的功能来解决此问题。定义一个强制的默认成功目标网址-例如/login.submit.result。成功登录后,它将重定向到该特定URL,您可以通过上下文中的任何控制器来映射和控制该URL。当然,这将禁用“目标url”的来源意图。如果您打算使用此解决方案,并且必须在登录后重定向到页面,那么您必须在现有层(基于变量或内部会话参数)之上构建一个额外的“目标url”层。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。