单击注销时如何从所有活动会话中注销?

问题描述 投票:0回答:1

单击注销按钮时,我希望从所有活动会话中注销。我的项目是由Groovy在Grails 2.3.8上开发的,并且还使用了spring-security 1.2.7

session grails groovy spring-security logout
1个回答
0
投票

如果在所有浏览器/标签页/设备上所有JSESSIONID的库位都不相同(我90%确信它们是90%,那么就没有现成的方法来删除它们的http会话。

尽管建立这样的机制并不重要。您可以使用单例缓存,例如ConcurrentHashMap,以会话ID为键,并以用户ID赋值。

您可以通过HttpSessionListener填充单例,例如herehere

现在,如果要删除所有用户会话,则必须遍历地图,找到用户ID的所有条目,并将其值设置为例如null

另一个难题是before-过滤器或-拦截器。它应该检查缓存,并在条目具有null而不是用户ID的情况下执行注销。

© www.soinside.com 2019 - 2024. All rights reserved.