我有一个基于Spring的Web应用程序,我正在实现Spring Security 3.1。
我需要的是能够在配置的会话超时发生时自动重定向到登录页面。我正在实现包含大量jQuery功能的网页,所以我需要能够自动重定向。
当前发生的事情,当会话超时通过时,直到执行操作 - 页面提交才重定向到登录页面。
我的spring-security.xml:
<http auto-config="true" disable-url-rewriting="true">
<intercept-url pattern="/test/user*" access="ROLE_USER, ROLE_ADMIN" />
<intercept-url pattern="/test/admin" access="ROLE_ADMIN" />
<form-login login-page="/test/login"
default-target-url="/test/home"
authentication-failure-url="/test/loginfailed" />
<logout invalidate-session="true" logout-success-url="/test/logout" />
<!--
<session-management invalid-session-url="/test/login">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>
-->
</http>
在我的web.xml中,我有:
<!-- Web Session Timeout (mins) -->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
我认为你不需要自己动手,Spring几乎可以自己处理。这就是春天的伟大!
我会尝试什么!要做的是这样的:
我们通过将响应状态设置为403
来处理此场景。我们的login.jsp
中的以下代码可以解决问题:
<%
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
%>
缺点是,当您访问登录页面时,浏览器控制台将显示login
请求返回403
。
完成此操作后,ajax调用将失败并进入失败状态,您可以在其中检查状态,显示会话超时的消息。