只是关于 Spring Security 和会话失效的问题。
当会话被 ConcurrentSessionControlStrategy 无效时,会话会通过调用 removeSessionInformation 方法从 SessionRegistry 中删除,但是当会话因手动注销而无效时,HttpSession 也会无效,但不会调用 SessionRegistry 从那里删除条目。
我已将 HttpSessionEventPublisher 添加为侦听器,该侦听器正在捕获 HttpSessionDestroyedEvent 事件,但再次没有调用 SessionRegistry。
我通过创建自己的 LogoutFilter 实现并添加一个处理程序来手动调用 removeSessionInformation 来解决这个问题,但如果可能的话,我希望能够使用标准的 spring 注释。(注意,我不能使用标准注销标签的 success-handler-ref 字段,因为会话已经失效,所以我无法访问会话 ID)
有什么我在这里遗漏的,还是这只是 Spring 遗漏的东西?
顺便说一下,这是使用 Spring Security 3.1.0。