SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理(一)

文章目录

前言

1:几个核心问题

 2:一个关键思考

一:回顾Filter

1:过滤器概念作用

2:过滤器核心代码 

3:过滤器原理

4:过滤器链 FilterChain

二:SSC的FilterChain

1:原理

2:图示


大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。

孙哥链接:孙哥个人主页
作者简介:一个颜值99分,只比孙哥差一点的程序员
本专栏简介:话不多说,让我们一起干翻SpringSecurity6

本文章简介:话不多说,让我们讲清楚SpringSecurity6的实现原理

前言

1:几个核心问题

        之前,我们引入了一下这四个问题,接下来,我们会在后续的文章中一一解答。

1:在引入 Spring Security 后,为什么所有请求就需要先做登录认证了呢?
2:登录页面是怎么产生的?
3:默认用户 user 和 控制台的密码,是哪里来的 存在了哪里的,怎么做的验证?
4:登录页面、帐号和密码能自定义吗? 

 2:一个关键思考

        如何实现client向server发送请求时,先检测用户是否登录,登陆了才能访问,没有登录重定向登录页面?

        如果向实现这个东西,那么客户端请求的时候就不能直接碰到web应用,而是对当前的请求进行一个登录检查,如果是已经登录那么就继续访问web资源,如果没有登录那么就返回登录页面。

        适用于这个点的功能组件,我们首先想到的就是过滤器或者叫拦截器!

SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理(一)_第1张图片

         SpringSecurity的技术手段是怎样的呢?SpringSecurity对于Servlet的支持是基于Servlet Filter的。也就是说SSC的实现技术手段也是Filter。

一:回顾Filter

1:过滤器概念作用

        当客户端访问一个Servlet时,需要经过一系列的过滤器。这一系列的Filter和Sevlet形成了一个Filter Chain的概念。下面的图显示了单个Http请求的处理程序的典型分层

        过滤器由

SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理(一)_第2张图片

2:过滤器核心代码 

        这个方法是必须被覆盖重写的方法。在这个方法里边chain.doFilter放行当前过滤器,进行下一步过滤器。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
	// do something before the rest of the application
    chain.doFilter(request, response); // invoke the rest of the application
    // do something after the rest of the application
}

3:过滤器原理

        必须实现 Filter 接口过器在访问 Web 资源可以对请求进行拦截,并对请求进行预处理和后处理操作,然后将请求传递给日标资源。

        比如,强制登录过滤器,访问 web 资源时先对请求进行登录检查,已登录可以往后访问,未登录重定向回登录页。

4:过滤器链 FilterChain

        在对一个 web 资源进行拦截处理时的多个 Filter 和 web 资源组成一个FlterChain 过照链

        FilterChain 中的 doFilter() 方法非常重要,用于让 Filter 链上的当前过滤器放行,使请求或响应进入下一Filter 或 web 资源

二:SSC的FilterChain

1:原理

        SpringSecurity在实现的时候也是基于了一系列的Filter。

        其中有几个重要的:DelegatingFilterProxy(委托过滤器代理),这个是Servle容器和Spring工厂之间的桥梁。

        如果在应用的过滤器链中想使用SpringSecurity的过滤器,那么就需要DelegatingFilterProxy就在FilterChain里边。然后就往原生的Filter Chain里边注入了Spring Security的FilterChain。

2:图示

SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理(一)_第3张图片

        具体的实现原理请查看下面的文章。 

       

你可能感兴趣的:(#,Spring,spring,boot,Security,Spring,Security,Filter,Servlet)