Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring安全注销不会终止会话_Spring_Security - Fatal编程技术网

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

我正在使用spring安全注销来实现注销。我的spring配置是

<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";