Java Request.isRequestedSessionValid()在会话过期后仍然为真

Java Request.isRequestedSessionValid()在会话过期后仍然为真,java,session,security,Java,Session,Security,我正在使用SpringSecurity3.0,并创建了一个自定义过滤器来检查过期会话 我的问题是request.isRequestedSessionValid()在我的筛选器中返回true,即使在我让会话过期或注销之后也是如此。如果我试图访问任何受保护的页面,我会被重定向到我的登录页面,这样我就知道会话管理是有效的 我的理解是,当web会话超时时,会话将自动失效,我还在Spring Security的注销元素中设置了invalidate会话。会话如何仍然有效?我是否检查了错误的值?请求。isRe

我正在使用SpringSecurity3.0,并创建了一个自定义过滤器来检查过期会话

我的问题是request.isRequestedSessionValid()在我的筛选器中返回true,即使在我让会话过期或注销之后也是如此。如果我试图访问任何受保护的页面,我会被重定向到我的登录页面,这样我就知道会话管理是有效的


我的理解是,当web会话超时时,会话将自动失效,我还在Spring Security的注销元素中设置了invalidate会话。会话如何仍然有效?我是否检查了错误的值?

请求。isRequestedSessionValid()
本身会导致创建会话,即使在调用注销后也是如此。使用
request.getSession(false)!=null
改为检查,这将确保未创建会话。

如果没有会话,我不确定该调用是否会创建会话。尝试
request.getSession(false)
。如果返回null,那么您的另一个调用正在创建sessession,因此请使用此函数来检查。看起来您是对的,使用request.getSession(false)为我修复了它。添加您的评论作为答案,我会将其标记为已接受。谢谢