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

时间:2020-02-03 09:33:31

标签: session grails groovy spring-security logout

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

1 个答案:

答案 0 :(得分:0)

如果在所有浏览器/标签页/设备上所有JSESSIONID的库克都不同(并且我有90%的信心,他们有90%的信心),则没有现成的方法可以删除它们

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

您可以通过HttpSessionListener来填充单身人士,例如herehere

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

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