Spring Security - 可以恢复丢失的会话吗?

Posted

技术标签:

【中文标题】Spring Security - 可以恢复丢失的会话吗?【英文标题】:Spring Security - possible to restore a lost session? 【发布时间】:2011-11-12 11:03:12 【问题描述】:

我将用户未保存的更改存储为会话属性。这样,如果浏览器意外关闭,也不会丢失任何数据。然而,在某些情况下,这无济于事:计算机在 cookie 刷新到磁盘之前意外关闭;使用不同浏览器或计算机的用户;浏览器缓存被清除等

即使 JSESSIONID 不再可用,当用户重新登录时能够恢复之前的会话也会很有用。我知道您可以使用看起来非常相似的 Spring Security 来管理并发,但这可能吗?

【问题讨论】:

【参考方案1】:

我不确定会话是否可以“恢复”,但是当浏览器关闭时,用户的会话确实会过期。您可以使用实现 HttpSessionBindingListener 的自定义类从其中恢复信息。

【讨论】:

关闭浏览器时会话不会过期。服务器无法检测到该事件。当会话空闲时间超过会话超时时间,或者通过 HttpSession.invalidate() 操作显式销毁会话时,会话过期。

以上是关于Spring Security - 可以恢复丢失的会话吗?的主要内容,如果未能解决你的问题,请参考以下文章

JWT spring security Authentication过滤器丢失标头信息

微服务 Spring Cloud Gateway + Spring Security LDAP 作为 SSO + JWT - 请求/响应之间丢失令牌

使用发送到电子邮件的动态 URL 实现 Spring Security 密码恢复的指南

带有 Spring Security 的氛围

Spring实战----security4.1.3认证的过程以及原请求信息的缓存及恢复(RequestCache)

Spring Boot security/OAuth2 - 丢弃远程身份验证并在访问远程 userInfo 端点后恢复本地