Spring Security:服务器重启后身份验证保持不变

Posted

技术标签:

【中文标题】Spring Security:服务器重启后身份验证保持不变【英文标题】:Spring Security: The authentication stays after server restart 【发布时间】:2017-12-31 05:31:19 【问题描述】:

重启Tomcat后,我发现认证还在,就像我重新登录一样。但是,在我使用clean tomcat work directory之后,认证丢失(切换回anonymousUser)。

那么 Spring Security 是如何记住 tomcat 关闭之间的身份验证的呢?

工作目录中与已删除的身份验证相关的内容是什么?

它与记住我的功能有关吗?

【问题讨论】:

这与 Spring Security 无关,而与 tomcat 无关。如果您干净地关闭了 tomcat 并已配置应将会话刷新到磁盘,则处于活动状态的会话在重新启动后仍然处于活动状态(假设它们没有超过其生存时间)。 Spring Security 与您的 servlet 容器无关。 Spring Security 检测到会话,并且 SecurityContext 存储在 HttpSession 中,因此再次恢复。 【参考方案1】:

Tomcat 在服务器重新启动之间保持会话。您可以在Tomcat configuration中更改此行为

来自 Tomcat 文档

每当 Apache Tomcat 正常关闭并重新启动时,或者当 触发应用重载,标准Manager实现 将尝试将所有当前活动的会话序列化到磁盘文件 通过路径名属性定位。然后所有此类保存的会话将 被反序列化和激活(假设它们在 平均时间)应用程序重新加载完成的时间。

【讨论】:

以上是关于Spring Security:服务器重启后身份验证保持不变的主要内容,如果未能解决你的问题,请参考以下文章

Spring-security:即使在 JVM 重启后也能保持活动会话

Spring Security Active Directory LDAP 身份验证错误

使用 Spring Security 在一个应用程序中结合数据库和 SAML 身份验证

Tomcat 重启后 Spring Security 主体未完全填充

Tomcat 和 spring-security 中的 Web 应用程序和 REST 服务 SSO

Tomcat重启后基于spring security java的配置