我如何获得所有公开会话?

时间:2013-12-05 12:19:21

标签: session spring-security

我使用spring security,我想循环遍历所有打开的会话并使用HttpSession.setMaxInactiveInterval(timeout);更改超时

我考虑过使用SessionRegistry.getAllSessions(),但它只返回SessionInformation个实例而不是HttpSession个对象。

1 个答案:

答案 0 :(得分:4)

Spring Security中没有任何内容可以执行此操作 - 如您所见,SessionRegistry不会保留HttpSession个实例。

因此,您必须使用HttpSessionListener来维护自己的活动会话地图,以记录会话创建和销毁(几乎与your question from yesterday的答案中所述。

可能是Map<String,HttpSession>,其中密钥是会话ID。

然后,您可以随时迭代该地图并修改会话对象。不要忘记使用线程安全的映射,并在它们到期时删除任何会话(在sessionDestroyed方法中)。