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 主体未完全填充