【发布时间】:2023-04-10 12:32:01
【问题描述】:
我正在使用 Spring Security 3.0 并创建了一个自定义过滤器来检查过期会话。
我的问题是,即使我让会话过期或注销,request.isRequestedSessionValid() 在我的过滤器中也会返回 true。如果我尝试访问任何安全页面,我会被重定向到我的登录页面,因此我知道会话管理工作正常。
我的理解是,当 Web 会话超时时,会话会自动失效,并且我还在 Spring Security 的注销元素中设置了 invalidate-session。会话如何仍然有效?我是否检查了错误的值?
【问题讨论】:
-
我不确定如果没有会话,该调用是否会创建会话。试试
request.getSession(false)。如果返回 null 那么你的另一个调用正在创建一个会话,所以使用它来检查。 -
看起来你是对的,使用 request.getSession(false) 为我修复了它。添加您的评论作为答案,我会将其标记为已接受。谢谢