Spring安全注销不会终止会话
我正在使用spring安全注销来实现注销。我的spring配置是Spring安全注销不会终止会话,spring,security,Spring,Security,我正在使用spring安全注销来实现注销。我的spring配置是 <http auto-config="true" use-expressions="true" entry-point-ref="customLoginUrlAuthenticationEntryPoint" disable-url-rewriting="true"> <logout success-handler-ref="logoutSuccessHandler" invalidate-ses
<http auto-config="true" use-expressions="true" entry-point-ref="customLoginUrlAuthenticationEntryPoint" disable-url-rewriting="true">
<logout success-handler-ref="logoutSuccessHandler" invalidate-session="true" delete-cookies="JSESSIONID,Helix"/>
</http>
问题是,一旦我注销并返回浏览器,我就会登录到登录后输入的页面上。返回浏览器不应该工作。JSESSIONID cookie也不会被删除。返回浏览器总是工作的(如果你不从一开始就禁用缓存,它只会从浏览器缓存中检索页面),还有,当重定向导致一个新的请求(使用新的头等)时,这些头有什么用呢。因此,我不知道为什么要覆盖这个
LogoutSuccessHandler
很好的观察结果。我不应该使用sendRedirect。让我调用super.onLogoutSuccess(请求、响应、身份验证)。如何将用户重定向到自定义页面。它还将负责会议。为什么删除Cookie标签不起作用。我仍然看到这些Cookie。SimpleRullogoutSuccessHandler
已经进行了重定向,基本上你添加的标题没有任何作用。那么为什么要使用这个自定义类,只需在logout
元素上设置logout success url
属性。如前所述,由于浏览器缓存的原因,返回上一页将始终有效(除非您从一开始就注意缓存!)。根据servlet容器的不同,显式cookie删除可能不起作用,但是会话失效应该起作用。我必须在注销时对第三方执行某些逻辑。我还需要删除登录时创建的某些cookie。你能指导我如何做到这一点吗?我相信我们必须编写一个自定义注销处理程序。如果您需要执行一些逻辑,那么只需实现一个LogoutHandler
,而不是LogoutSuccessHandler
。当请求注销时,LogoutHandler
是执行操作的地方,LogoutSuccessHandler
用于之后。如上所述,删除cookie在某些应用程序服务器上可能不起作用(如果我没有弄错的话,参考指南中也提到了这一点)。
response.setHeader("pragma", "no-cache");
response.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
response.setHeader("Expires", "0");
response.sendRedirect(request.getContextPath()+"/DEP/loginHelix";