【问题标题】:HttpSessionListener doesn't work on my Spring MVC applicationHttpSessionListener 在我的 Spring MVC 应用程序上不起作用
【发布时间】:2020-07-11 00:31:32
【问题描述】:

我在我的 Spring MVC 应用程序中实现了 HttpSessionListener,但它不起作用。 在我的应用程序中,会话由 Spring Jdbc Session 管理并与 Spring Security 一起使用。 我从一些答案中了解到 Spring jdbc 不支持 HttpSessionEventPublisher。

在每种情况下,首先我尝试使用经典方式在 web.xml 中配置监听器。 配置下方:

<!-- BEGIN - IDG - session management -->
<filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<session-config>
    <session-timeout>60</session-timeout>
</session-config>
<!-- END - IDG - session management -->

<!-- BEGIN - IDG - security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- END - IDG - security -->

<listener>
    <listener-class>
         it.gov.ali.listener.CustomSessionListener
    </listener-class>

CustomSessionListener 实现 HttpSessionListener 及其方法 sessionDestroyed 和 sessionCreated。

现在,当我使用 Spring Security 注销时,会话正确无效,并且我的数据库中的行会话被删除,但我没有点击我的自定义侦听器。

有没有一种特殊的方法可以使用 spring jdbc 配置会话侦听器,或者我错过了什么?

谢谢大家。

【问题讨论】:

    标签: spring session listener config


    【解决方案1】:

    如果您使用的是 Spring session jdbc,则 HttpSession 由 spring session 支持。
    因此,如果您使用的是 spring-session 2.2.1.RELEASE 依赖项,请查看第 314 行的 SessionRepositoryFilter 类中的 getSession 方法,这可能很有用,您可以覆盖该类以获得所需的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      相关资源
      最近更新 更多