【问题标题】:how to detect tomcat session expiration using spring如何使用spring检测tomcat会话过期
【发布时间】:2013-09-06 12:10:30
【问题描述】:

我正在使用spring运行检票口并使用spring security,当tomcat会话时,web.xml中声明的会话过期

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

我想使用过滤器捕获此事件(不覆盖现有的 httpSession 或 Session ) 我怎样才能使用弹簧来实现呢?

10 倍

【问题讨论】:

    标签: spring tomcat spring-security


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2010-09-05
    • 2014-11-27
    • 2011-06-19
    相关资源
    最近更新 更多