【问题标题】:How to write Listener for Spring Session Expiry如何为 Spring Session Expiry 编写监听器
【发布时间】:2023-03-03 03:57:01
【问题描述】:

我正在做一个Spring Session的PoC来实现(HTTP)Session的完整生命周期管理。这样做时,我想编写一个侦听器,它可以在 Spring Session 自动过期时得到通知。

在这个监听器中,我想做一些清理活动。

我该如何编写一个监听器,或者是否已经为 Spring 编写了一个监听器 可以在自动到期期间调用的会话?

【问题讨论】:

  • 从我对 Spring Session 的了解来看,它实际上取代了默认的 HttpSession 实现。鉴于此,我希望您可以在 web.xml 中注册标准 HttpSessionListener 并监听 sessionDestroyed 事件。
  • 谢谢你..我刚刚发现这个帖子讨论了相同的stackoverflow.com/questions/19534502/…,现在将尝试并发布结果..
  • 该线程似乎在谈论关闭浏览器后立即使会话无效,这是一个不寻常的要求。通常情况下,您只需让会话在这些情况下过期,正常过期应该会触发事件。
  • 对不起,我正要更正链接。这是正确的链接,我将尝试stackoverflow.com/questions/27753111/…,您认为这里推荐的解决方案是正确的吗?
  • 似乎与我的建议相似,所以是的,它认为这应该没问题。但请注意,我实际上并没有使用 Spring Session,只是根据我阅读的内容得出结论。

标签: spring listener session-timeout spring-session


【解决方案1】:

Spring Session 当前不支持 HttpSessionListener。见spring-session/gh-4

你可以听SessionDestroyedEvent's

它们与 HttpSessionDestroyedEvent 的不同之处在于 Spring Security 将基于 HttpSessionEventPublisher(HttpSessonListener 的实现)触发 HttpSessionDestroyedEvent。因此 HttpSessionDestroyedEvent 在使用 Spring Session 时不会被触发,因为不支持 HttpSessionListener。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多