Spring 3.1:处理会话超时

Posted

技术标签:

【中文标题】Spring 3.1:处理会话超时【英文标题】:Spring 3.1: Handling session timeout 【发布时间】:2012-09-16 04:07:15 【问题描述】:

我有一个使用 Spring 3.1 身份验证的应用程序。我有一些页面发出 AJAX 请求以在对话框中显示一些信息。现在,如果用户的会话超时,Spring 会重定向到登录页面。我不想要基于 AJAX 的登录页面。我希望通过取消当前操作将用户完全导航到登录页面。用户登录后,将用户导航回他所在的最后一页(从那里发出 AJAX 请求)。

如果请求是从页面发出的,则重定向内容可以正常工作。

【问题讨论】:

【参考方案1】:

执行重定向到登录页面的类是LoginUrlAuthenticationEntryPoint。我会编写一个自定义的AuthenticationEntryPoint 实现来检测Ajax 请求(例如,通过查看Accept 标头),并发送错误代码而不是执行重定向。

不过,您仍然必须在客户端检测到这一点。 Spring Security 可以做的不多,但是您应该能够从 javascript 重新加载当前页面,这将强制登录,然后重定向到原始页面(默认 Spring Security 行为)。

【讨论】:

你能给我一个如何从ajax调用重定向的示例代码吗?

以上是关于Spring 3.1:处理会话超时的主要内容,如果未能解决你的问题,请参考以下文章

Spring security-无限用户会话超时与IDP

Grails,在 AJAX 调用中处理会话超时

Spring Security 会话超时太短

Spring Boot,Spring Security,会话范围 Bean 的会话超时问题,@PreDestroy

Spring Security 中是不是存在会话超时异常?

在 Spring MVC 中设置会话超时