【问题标题】:Spring Boot + Spring Session HttpSessionListener not workingSpring Boot + Spring Session HttpSessionListener 不起作用
【发布时间】:2016-02-24 19:09:04
【问题描述】:

我有一个 Spring Boot (1.3.2) 应用程序,我在其中实现了一个 HttpSessionListener。我从@Configration 类注册了监听器

@Configuration
@EnableRedisHttpSession
public class ApplicationSessionConfiguration {

@Bean
public ServletListenerRegistrationBean<HttpSessionListener> sessionListener() {
    return new ServletListenerRegistrationBean<HttpSessionListener>(new SessionListener());
}

}

我已调试到 ServletListenerRegistrationBean.onInitialize 方法,并且侦听器正在向 ServletContext 注册。现在的问题是,当我对应用程序进行虚拟 REST 调用时,会话被正确创建并作为 SESSION cookie 发送回来,但 HttpSessionListener.createSession 方法永远不会被调用。我不确定我在这里缺少什么。

【问题讨论】:

    标签: spring-mvc session spring-boot spring-session


    【解决方案1】:

    您需要的功能似乎尚未在稳定版本中发布。然而,根据this ticket,这是固定的,可在 1.1.0 M1 版本中用于 spring-session。您可能想尝试 spring-session 的 1.1.0.RC1 版本,看看这是否有助于您想要的。有关如何完成此操作的详细信息,请参阅 in this doc link

    如果使用 1.1.0.RC1 版本不是一个选项(或者如果您由于某种原因不喜欢使用 RC1),您仍然可以通过使用您自己的实现扩展默认 CookieHttpSessionStrategy 来拦截会话创建和销毁事件(比如MyCookieHttpSessionStrategy) 然后覆盖 onNewSession(..) 和 onInvalidateSession(..) 来拦截这些事件。将 MyCookieHttpSessionStrategy 注册为普通 bean,一切就绪(Redis 会话存储库会自动获取它)。这适用于 Redis 会话,我以这种方式在我的 Spring Boot Web 应用程序中使用这些事件。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多