防止 Spring Security 在登录/注销后进行 302 重定向
Posted
技术标签:
【中文标题】防止 Spring Security 在登录/注销后进行 302 重定向【英文标题】:Prevent Spring Security from 302 redirecting after login/logout 【发布时间】:2015-09-27 17:32:57 【问题描述】:成功登录或注销后,以及身份验证失败后,重定向到 j_spring_security_check,状态码为 302。
我怎样才能阻止这个请求?
截图:
【问题讨论】:
【参考方案1】:我认为您可以通过执行两个操作来解决此问题,一个用于桌面浏览器,另一个用于移动应用程序。在服务器端从移动应用程序获取注销请求后,您可以避免重定向。
【讨论】:
【参考方案2】:我不确定你想做什么,但你可以将登录表单数据作为 AJAX 请求而不是表单帖子发送。
否则,there are some suggestions here
【讨论】:
这是出于安全原因。我不想表明我正在使用 Spring Security。我可以重命名吗? 还有其他方式可以看出您正在使用 Spring Security。安全令牌等。 隐匿安全不是一个好主意,您将无法隐藏它。 Spring security 4+ 使用login
。但是 mikeb 说的是真的 ;)【参考方案3】:
如果有人仍想更改默认名称:
添加属性login-processing-url,并给出自己的名字(默认为j_spring_security_check)。
<security:form-login
login-page="/login"
authentication-failure-url="/login/401"
username-parameter="user"
password-parameter="pass"
default-target-url="/"
always-use-default-target="true"
login-processing-url="/check"/>
然后在登录表单中:
action="<c:url value='/check' />"
对注销也一样:
<security:logout
logout-success-url="..."
invalidate-session="..."
delete-cookies="..."
logout-url="/logout"/>
【讨论】:
以上是关于防止 Spring Security 在登录/注销后进行 302 重定向的主要内容,如果未能解决你的问题,请参考以下文章
您如何在 spring-security 中注销所有已登录的用户?
Spring security logout - 仅在登录用户触发注销时添加消息
Spring Security SAML 单点登录全局单点注销LogoutRequest解析问题