Java acegi使用与Spring不同的会话吗?

Java acegi使用与Spring不同的会话吗?,java,spring,spring-security,Java,Spring,Spring Security,我一直在编写一个web应用程序,每个用户只创建一个会话。到目前为止,这一做法效果良好。然而,我遇到了一个问题,如果我有一个用户注销,Spring认为该用户仍然登录。我在注销时使与acegi的会话无效,但Spring似乎没有意识到: <security:logout invalidate-session="true" success-handler-ref="logout" logout-url="/logout.htm

我一直在编写一个web应用程序,每个用户只创建一个会话。到目前为止,这一做法效果良好。然而,我遇到了一个问题,如果我有一个用户注销,Spring认为该用户仍然登录。我在注销时使与acegi的会话无效,但Spring似乎没有意识到:

    <security:logout invalidate-session="true"
                success-handler-ref="logout"
                logout-url="/logout.html" />

所以,我的问题是:是否存在一个单独的春季会议,我必须作废,如果是这样的话,我应该怎么做呢

提前谢谢。
MirroredFate

如果你问Acegi和SpringMVC是否使用同一个会话,那么答案是肯定的,他们使用。您可能希望手动使控制器中处理
/logout.html
的会话无效

更新

正如OP在下面的评论中提到的,要使身份验证对象无效,请使用:

SecurityContextHolder.getContext().setAuthentication(null);

出于调试目的,您可以在会话结束时将添加到日志(或执行其他类似操作),谢谢您的回答!我做了更多的研究,最终发现虽然他们有相同的会话,但是Spring有一个身份验证令牌,当acegi使会话无效时,它不会“无效”。因此,我必须添加这行代码:SecurityContextHolder.getContext().setAuthentication(null);我的注销功能。我会将这个答案标记为正确(毕竟它确实回答了我的问题)。如果您想将这一行代码添加到您的答案中,它可能会帮助其他处于类似情况的人。