【问题标题】:Handle session timeout in Spring for webservice calls & AJAX calls在 Spring 中处理 Web 服务调用和 AJAX 调用的会话超时
【发布时间】:2014-12-30 10:15:01
【问题描述】:

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

已将以下内容添加到我的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>
    1234563用户直接登录页面。目前没有发生这种情况。
  1. 另外,我尝试从 Chrom 扩展 Postman 中访问 Web 服务 URL,即使在会话超时之后我仍然得到结果。

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

【问题讨论】:

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


    【解决方案1】:

    我们现在是这样处理的。

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

    <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 内部,它会返回一个错误,并在前端得到适当的处理。

    【讨论】:

      猜你喜欢
      • 2014-09-04
      • 2011-07-11
      • 2017-12-30
      • 2013-01-20
      • 2011-09-19
      • 1970-01-01
      • 2013-06-06
      • 2012-12-15
      相关资源
      最近更新 更多