如何在 Spring 安全性中访问已注销的用户名?

How is possible to access to the logged out user name in Spring Security?

我们使用Spring Security 4.0.x,我需要找到访问已注销用户名的方法。 我已经配置 LogoutSuccessHandler:

<logout logout-url="/logout" success-handler-ref="logoutSuccessHandler" />

我在方法签名中看到 authentication 对象:

onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)

不幸的是,authentication 对象是空的。 我看到 LogoutHandler (SecurityContextLogoutHandler) 在 logoutSuccessHandler 之前清除了身份验证,但我找不到如何通过 <logout .. 配置来配置 LogoutHandler 的方法。

如何在 Spring 安全中访问已注销的用户名?

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

如你所见,过滤器已经得到了Authentication,所以即使SecurityContextLogoutHandler清除了SecurityContextHolder中的Authenticationauth仍然持有 Authentication,在 LogoutFilter 之前,您是否还有其他清除 Authentication 的代码?