我使用spring security,我想循环遍历所有打开的会话并使用HttpSession.setMaxInactiveInterval(timeout);
更改超时
我考虑过使用SessionRegistry.getAllSessions()
,但它只返回SessionInformation
个实例而不是HttpSession
个对象。
答案 0 :(得分:4)
Spring Security中没有任何内容可以执行此操作 - 如您所见,SessionRegistry
不会保留HttpSession
个实例。
因此,您必须使用HttpSessionListener
来维护自己的活动会话地图,以记录会话创建和销毁(几乎与your question from yesterday的答案中所述。
可能是Map<String,HttpSession>
,其中密钥是会话ID。
然后,您可以随时迭代该地图并修改会话对象。不要忘记使用线程安全的映射,并在它们到期时删除任何会话(在sessionDestroyed
方法中)。