Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 security 如何在Spring Security中访问已注销的用户名?_Spring Security_Spring Security4 - Fatal编程技术网

Spring security 如何在Spring Security中访问已注销的用户名?

Spring security 如何在Spring Security中访问已注销的用户名?,spring-security,spring-security4,Spring Security,Spring Security4,我们使用SpringSecurity4.0.x,我需要找到访问已注销用户名的方法。 我已配置LogoutSuccessHandler: 我在方法签名中看到身份验证对象: onLogoutSuccess(HttpServletRequest请求、HttpServletResponse响应、身份验证) 不幸的是,身份验证对象是空的。 我看到LogoutHandler(SecurityContextLogoutHandler)在logoutSuccessHandler之前清除了身份验证,但我找不

我们使用SpringSecurity4.0.x,我需要找到访问已注销用户名的方法。 我已配置
LogoutSuccessHandler


我在方法签名中看到
身份验证
对象:

onLogoutSuccess(HttpServletRequest请求、HttpServletResponse响应、身份验证)
不幸的是,
身份验证
对象是空的。 我看到
LogoutHandler
SecurityContextLogoutHandler
)在
logoutSuccessHandler
之前清除了身份验证,但我找不到如何通过


如您所见,筛选器已获得
身份验证
,因此即使
SecurityContextLogoutHandler
也会清除
SecurityContextHolder
中的
身份验证
,而
身份验证
仍保留
身份验证
,在
LogoutFilter
之前,您是否有任何其他代码清除了
Authentication

我已经调试了
LogoutFilter
,但我看到身份验证已为
null
。调用
SecurityContextHolder#clearContext
的唯一代码是
SecurityContextPersistenceFilter
FilterChainProxy
。怎么了?您是否找到任何关于
SecurityContextHolder.getContext().setAuthentication(null或null对象)
的代码?我找到了在spring security之前清除会话的代码。谢谢你的帮助!
if (requiresLogout(request, response)) {
            Authentication auth = SecurityContextHolder.getContext().getAuthentication();

            if (logger.isDebugEnabled()) {
                logger.debug("Logging out user '" + auth
                        + "' and transferring to logout destination");
            }

            this.handler.logout(request, response, auth);

            logoutSuccessHandler.onLogoutSuccess(request, response, auth);

            return;
        }