SpringSecurity默认过滤器链解析之LogoutFilter(十)

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,这是个聚合类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkEuSMbN-1625812683708)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5b4bb09d-e41a-4fb5-b8ab-85bf1776b520/Untitled.png)]

我们可以通过实现LogoutHandler接口来完成对退出登录的自定义处理。



3**.退出成功处理器**

这个其实就是退出成功后要重定向或者转发到哪个url去。

默认实现是DelegatingLogoutSuccessHandler,这个类持有了个SimpleUrlLogoutSuccessHandler

SimpleUrlLogoutSuccessHandlerdefaultTargetUrl就是/login?logout
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nDjbsQ7-1625812683710)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b22bbef7-336d-45bc-b93a-169b1d90f67d/Untitled.png)]
在这里插入图片描述



4.小结

下一个处理器比较重要,这里就不放在一起了。UsernamePasswordAuthenticationFilter这个就是Spring Security中认证部分的核心了。下一篇再聊~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值