如何使用spring检测tomcat会话过期
Posted
技术标签:
【中文标题】如何使用spring检测tomcat会话过期【英文标题】:how to detect tomcat session expiration using spring 【发布时间】:2013-09-06 12:10:30 【问题描述】:我正在使用spring运行检票口并使用spring security,当tomcat会话时,web.xml中声明的会话过期
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我想使用过滤器捕获此事件(不覆盖现有的 httpSession 或 Session ) 我怎样才能使用弹簧来实现呢?
10 倍
【问题讨论】:
【参考方案1】:您可以使用侦听器类来实现此目的。定义如下监听组件:
@Component
public class AppLogoutListener implements
ApplicationListener<SessionDestroyedEvent>
@Override
public void onApplicationEvent(SessionDestroyedEvent event)
// from event you can obtain SecurityContexts to work with
您需要在 web.xml 中定义会话事件发布者:
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
这里HttpSessionEventPublisher
会在会话创建和过期时发布会话生命周期事件。
【讨论】:
这将添加对 Spring Security 的依赖(如果您已经拥有它,这不一定是问题)。您也可以自己实现HttpSessionListener
并实施sessionDestroyed
方法。无论您选择哪种方法,当用户注销您的应用程序时也会调用它(无法通过代码区分过期和调用 session.invalidate
。以上是关于如何使用spring检测tomcat会话过期的主要内容,如果未能解决你的问题,请参考以下文章