1.LogoutFilter 退出登录处理器
这个其实就是个专门处理退出登录请求的处理器, 默认的退出登录请求是/logout
。当然你也能自定义的。在继承WebSecurityConfigurerAdapter
后重写configure(HttpSecurity http)
方法,在这个方法里可以配置。
至于如何配置,网上很多,我这里就不讲了~
源码解析:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
// 校验是否是退出登录请求
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;
}
chain.doFilter(request, response);
}
2**.退出登录处理器**
默认实现是CompositeLogoutHandler,这是个聚合类
我们可以通过实现LogoutHandler接口来完成对退出登录的自定义处理。
3**.退出成功处理器**
这个其实就是退出成功后要重定向或者转发到哪个url去。
默认实现是DelegatingLogoutSuccessHandler
,这个类持有了个SimpleUrlLogoutSuccessHandler
。
SimpleUrlLogoutSuccessHandler
的defaultTargetUrl
就是/login?logout
4.小结
下一个处理器比较重要,这里就不放在一起了。UsernamePasswordAuthenticationFilter这个就是Spring Security中认证部分的核心了。下一篇再聊~