在Spring中处理Web服务调用的会话超时& AJAX调用

时间:2014-12-30 10:15:02

标签: java ajax spring spring-security session-timeout

我有一组直接使用URL调用的web服务,并且使用来自我的Web应用程序的AJAX请求调用了一些web服务。我正在尝试处理这两个请求的会话超时,但面临一些问题。这是我尝试过的以及我面临的问题。

已将以下内容添加到我的web.xml

<session-config>
        <session-timeout>1</session-timeout>
</session-config>

Spring安全配置:

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/**" access="isAuthenticated()"/>
    <form-login authentication-failure-handler-ref="failureHandler"
        authentication-success-handler-ref="successHandler" />
    <intercept-url pattern="/**" />
    <logout logout-success-url="${website.url}" />
    <session-management invalid-session-url="/home?invalid=true" />
</http>
  1. 现在,当我登录应用程序并闲置一分钟(即web.xml中配置的会话超时,并尝试点击任何URL(这使得AJAX调用webservice)时,我想要将用户直接重定向到登录页面。目前尚未发生这种情况。

  2. 此外,我尝试从Chrom扩展邮件中找到网络服务URL,即使在会话超时过后,我仍然会收到结果。

  3. 我在互联网上提到了类似的SO问题和其他资源,但无法找到任何解决方案。如果我在这里缺少任何配置,请建议。

1 个答案:

答案 0 :(得分:0)

我们现在已经这样处理了。

web.xml中添加了会话超时配置,并在login-page配置内向form-login添加了http属性。

<http auto-config="true" use-expressions="true">
        <!-- Un-comment when authorization is implemented -->
        <intercept-url pattern="/**" access="isAuthenticated()"/>
        <form-login login-page="/rest/invalidateSession"  authentication-failure-handler-ref="failureHandler"
            authentication-success-handler-ref="successHandler" />
        <intercept-url pattern="/**" />
        <logout logout-success-url="${website.url}" />
</http>

我们可以这样做,因为我们的应用程序登录页面位于Web应用程序上下文之外它是不同服务器上的页面。

内部服务rest/invalidateSession,它将返回错误,该错误在前端适当处理。