如何在 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
中的Authentication
,auth
仍然持有 Authentication
,在 LogoutFilter
之前,您是否还有其他清除 Authentication
的代码?
我们使用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
中的Authentication
,auth
仍然持有 Authentication
,在 LogoutFilter
之前,您是否还有其他清除 Authentication
的代码?