【发布时间】:2018-04-20 06:22:57
【问题描述】:
我有一个HttpSessionListener。有没有办法,在其sessionDestroyed 方法中区分以下情况:
- 会话被破坏,因为超出了 web.xml 中配置的
session-timeout - 会话被调用HttpSession#invalidate的应用程序以编程方式销毁
我的用例是我在多个应用程序之间有一个单点登录 (SSO) 安排,我希望在参与 SSO 安排的应用程序之一显式注销时进行全局单点登录,而不是在其会话时间时出,因此需要区分这两种情况。我想一种方法是让应用程序在调用HttpSession#invalidate 之前在会话对象中设置一些标志。然后HttpSessionListener 将检查会话对象,如果找到该标志,它将知道这是一个程序性注销。如果不是,那就是容器注销。这是否有意义和/或有更好的方法吗?
【问题讨论】:
标签: servlets httpsession