我有一个使用Spring Security的Spring MVC项目。我想知道j_spring_security_logout
是如何运作的。我在这样的视图中定义了一个注销链接:
<a href="<c:url value="/j_spring_security_logout" />">Logout</a>
在我的spring-security.xml
我已经定义了这个:
<form-login login-page="/login" default-target-url="/wellcome" authentication-failure-url="/loginfailed" />
<logout logout-success-url="/logout" logout-url="/j_spring_security_logout" />
<session-management invalid-session-url="/invalidsession" />
我预计点击退出会将我重定向到/logout
,但我会被重定向到invalid-session-url
,即/invalidsession
。 logout-success-url
被忽略。
但是,当我删除session-management
时,注销确实会将我重定向到/logout
。
答案 0 :(得分:1)
Spring Security reference manual中解释了这一点。
除非在您注销时删除会话cookie,否则您无法真正使用会话到期工具。
答案 1 :(得分:0)
只使用这个,它应该有效(没有logout-url
):
<logout logout-success-url="/logout" />
我认为您可能会因使用注销和会话管理无效的会话网址而遇到问题,因为一旦您注销了会话,就不再有效了。
根据您的其他问题更新,具体如何:
<security:logout logout-success-url="/logout?displayLogout=1" />
<security:session-management invalid-session-url="/logout?displayLogout=0" />
击> <击> 撞击>
<击> 然后在你看来:
<c:if test="${param.displayLogout == 0}">
<h2>Your session has timed out.</h2>
</c:if>
击> <击> 撞击>
更新#2,只是在本地尝试,当您注销会话无效时,您将被重定向到invalid-session-url
配置中指定的session-management
位置。
现在对解决方案非常感兴趣。