春季安全3.1 - 自动跳转到登录页面时,会话超时(Spring Security 3.1 - A

2019-08-01 04:20发布

我有一个基于Spring的WENB applicatoin和我采取的Spring Security 3.1。

我需要的是能够自动重定向到登录页面,当配置的会话超时。 我implemting包含了很多jQuery的功能的网页,所以我需要能够自动重定向。

目前,会发生什么,当会话超时的推移,它不是直到执行一个动作 - 页面提交,它重定向到登录页面。

我的弹簧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>   

Answer 1:

我不认为你需要自己做,春天非常处理这本身。 这是春天的伟大!



Answer 2:

我会尝试! 做的是这样的:

  • 在某种程度上配置Spring Security,它不发送一个HTTP状态代码200(OK)重定向(三百零七分之三百零三)到登录页面,但别的,例如可以通过状态码401 ajax的处理程序进行检测(未授权)
  • 通过showhing登录页面配置在其处理的401码的方式AJAX客户端(或什么都使用)是正确的,例如


Answer 3:

我们有这样的情况下通过响应状态设置为处理403 。 在我们下面的一段代码login.jsp的伎俩:

<%
    response.setStatus(HttpServletResponse.SC_FORBIDDEN);
%>

缺点是,当你访问登录页面,浏览器控制台会显示login请求返回403

一旦做到这一点,Ajax调用失败,进入故障状态,您可以检查状态,即会话超时演出的消息。



文章来源: Spring Security 3.1 - Automatically redirect to login page when session-timeout occurs