我有一组直接使用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>
现在,当我登录应用程序并闲置一分钟(即web.xml
中配置的会话超时,并尝试点击任何URL(这使得AJAX调用webservice)时,我想要将用户直接重定向到登录页面。目前尚未发生这种情况。
此外,我尝试从Chrom扩展邮件中找到网络服务URL,即使在会话超时过后,我仍然会收到结果。
我在互联网上提到了类似的SO问题和其他资源,但无法找到任何解决方案。如果我在这里缺少任何配置,请建议。
答案 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
,它将返回错误,该错误在前端适当处理。