如何在 Spring Security 中关闭 HTTP 会话超时?
Posted
技术标签:
【中文标题】如何在 Spring Security 中关闭 HTTP 会话超时?【英文标题】:How to turn off HTTP session timeout in Spring Security? 【发布时间】:2014-10-20 17:48:37 【问题描述】:是否可以在 Spring Security 中关闭 HTTP 会话超时?
从这个answer我看到可以像这样在web.xml中修改HTTP会话超时:
<session-config>
<session-timeout>10</session-timeout>
</session-config>
但我没有从 Spring Security 手册中找到如何禁用超时。
从这个answer我看到Spring Security在内部使用了一个javax.servlet.http.HttpSession,根据这个manual page可以通过调用setMaxInactiveInterval(0)方法将其设置为永不过期。
因此,应该可以通过获取 HttpSession(如答案中的 here 所示)并将 maxInactiveInterval 更改为 0 来更改会话超时。我的问题是,如果我会在用户第一次这样做之后登录后,HttpSession中的变化是否会持续存在(即在下一个请求中,HttpSession中的变化是否仍然存在?)
是否可以像这样在 web.xml 中禁用会话超时?
<session-config>
<session-timeout>0</session-timeout>
</session-config>
还有一个问题,Spring Security 中默认的 HTTP 会话超时是多少?
【问题讨论】:
你真的不想这样做。它们可以持续数年,并且一直占用资源。设置一个不会给用户带来不便的大超时时间。我用了 8 个小时,但我怀疑由于资源消耗的原因,我不得不将它减少到 4 个。 感谢您的评论,我没有考虑到这一点。八小时对我来说应该足够了。 【参考方案1】:是的。除非会话显式无效,否则下面的 sn-p 将使 HTTPSession 保持活动状态
<session-config>
<session-timeout>0</session-timeout>
</session-config>
【讨论】:
以上是关于如何在 Spring Security 中关闭 HTTP 会话超时?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的新 Spring Boot 项目中关闭 Spring Security?
使用simplejdbccall时如何在spring中关闭refcursor
如何在 Spring Boot 中关闭嵌入式 Tomcat?