00:01
各位大家好,欢迎继续收看上硅谷视频课程,在刚才内容中呢,我们给大家介绍了spring security的一个基本原理,它本质上就是一个过滤点,里边有很多过滤器,然后过滤器对应不同的请求执行不同的功能,包括咱们也通过三个最典型过滤器通过源码做了查看,那下面呢给各位继续来介绍。就是在这个spring security里边呢,有很多的过滤器,而这过滤器在我们这过程中,它是怎么来进行加载的,所以给大家来介绍一下它里面这些过滤器是如何进行加载的,这是我们要介绍的第二个内容,给大家写一下。Spring c里边这些过滤器是如何进行?加载的,那各位详细来说一下,首先第一个我们看一下啊,因为我们写这个入脉例呢,咱们是基于这个boot是进行操作的,而boot里边呢,其实它对这个spring security security进行了一个自动化的配置,包括咱看一下我之前曾经提到过有这么一点,咱来看一下啊,就这里边。
01:14
说自从有了boot之后,Boot对这个spring security提供了自动化的配置方案,也就说你只需要引入依赖它,就会把这个security给它配置到我们这个项目中来,不需要咱们做O配置,可以极大减少你这个工作量,但如果说你不用这个boot的话,那你做这个spring security会特别麻烦,里边需要做很多事情,比如你需要配置过滤器,包括过程,只是用了这个之后,里面这过程不需要了,他帮我们做到了,但这过程希望各位要知道。所以我下面这个位置来介绍一下,那怎么介绍,首先我写一下啊。就是我们现在首先第一部分,如果说你要使用这个spring。
02:04
Security,你首先要配置一个过滤器,要做这个事情,直接过滤器呢,咱之前没配置的原因是因为我们用这个s boot里边把这过程帮我们做到了,但是本质上它需要有这步骤,而这过滤器叫什么名字呢?给各位写一下,它叫delegating filter per。一会儿咱会看它的源码。Theater。Policy。这是它需要我们配置的一个过滤器,然后它的过程是在这里边做这么一个执行,那咱下面我就通过源码给各位来做个介绍,就是你如果不用损BOO,首先需要配置这么一个过滤器,就是咱们通过我们的web点叉M中通过一个filter filter mapping做个配置,那我们下面看一下源码,看它怎么加载的。
03:00
咱们来看一下啊。先搜索这个内容,就刚才我写到的。Deleating filter process把它打开,打开之后呢,这是我们要配置一个过滤器,指这过程损步帮我们做到了,然后过滤器中咱们用说找什么,是不是有个do filter方法,过滤方法,然后在过滤方法中你看到啊,前面也是做了各种的判断。包括得到当前的这个对象,然后得到之后在里边呢,调了一个方法,这个方法叫in这个方法,这方法虽然我们可能不知道它什么意思,但是init咱认识吧。是不是初始化呀,那咱就看一下这个方法里边到底是干什么的,把这点开就是到这里边我们要配置过滤器do filter肯定会执行,执行之后调这个印力的方法,在印力的方法中大家看到。里边是不是这个过程,这个过程是什么呢?有同学会说这个代码我也看不懂,但是我觉得有一个地方你应该能看懂。
04:02
这个地方。各位应该能看懂啊,你别说你看不懂,如果这句话你看不懂,那我建议同学你把的课程好好学习,学好之后再来学,我们这门课程就是它是通过。WC就是web contact get b得到这个名字就是这个名字,在我们的这个security中有一个固定的名字,它叫filter chin proceed,然后通过它来指引我们的具体流程,那这过程给各位来画下啊。就是首先里边的第一部分,咱们先配置这么一个。过滤器,然后在过滤器里边呢,有咱们刚才看到的一段代码,就是它里边那个do filter中。来画一下啊,多filter里边有一个代码,就是这个初始化的这个方法。和写下。就是在这个方法中有一个。初始化的方法就是它会掉这个方法。
05:03
给各位拿过来,然后在这个初始化方法中,它会干什么呢?会给我们做这么一件事情,就是咱们刚才看到的,它里边就会啊,得到这么一个过滤器的名字叫做filter chin p,这是它内置力过滤器,比如说在我们的刚才看到的。这个步骤中这个叫target name这个名字就是咱写那个filter chain policy,然后在里边做你的具体内容。给各位来画一下,就是我们的这个位置。来加段文字啊,它叫这个。非要去。To。他是叫这个名字,然后他就会执行里边的。这个雷器中的具体操作。往下画一下啊,就是现在我们到了。这个步骤。在这里,然后你记住里边的名字叫filter chain pro,这是它里边内置的这么一个过程。
06:05
然后咱们下面就来看一下这个叫filter chain process,你注意啊,我现在是带着各位同学来看一下它底层的源码,看一下它的执行过程,因为这是咱们看源码嘛,就是先到do filter里边in尼的方法,In尼方法中得到你的过滤器,过滤器名字刚才咱们说到了。给各位啊,我们来看一下c shift的N,它叫做filter,这个CH。到这里搜索啊。这个叫。Person把它点开,它就会到这个方法中,然后在这里边呢,大家看啊,里边有很多的那种,咱还是找到这个叫do filter方法,然后在do filter方法中,你看啊,里边也是做了各种判断,但是不管怎么判断,它是不是都去调这个叫do filter特no这个方法,那我们进入到这个方法中。
07:02
你看啊,这个方法中呢,做了很多事情,咱们看重点,前面是快的,这是response,然后主要是这行代码,这行代码中大家看啊。这是什么结构?是不是一个粒子集合呀,就是这个粒子集合中叫filters是什么?就是咱们过滤链中的多个过滤器,就是咱们说的实际有过滤器,就在这个历史结构中包含,然后它包含过滤器之后,下面就把这个方法最终做这么一个执行,它里边就是这个过程中,就是把我们过链中的所有过滤器做了一个加载,然后你看里边有一个叫get filters,大家看这方法中。大家看这个代码做的什么事情,我觉得这个代码大家能看懂啊。这是什么?是不是迭代器啊,下一个嘛,把这些过滤器都加载到里边,就加载到咱的过滤链中,做这么一个操作,然后在里边有个对象叫这个security filter chain里边就是到我们最底层的啊,就是它在这个方法中最终返回你的所有过滤器这个集合嘛,把它加载到咱这个微电中,所以它里边本质上是这么一个过程。
08:17
我把这个给各位再来。写一下啊,就是我们在这个类中叫filter chain里边。这个类里边,然后它做的事情就是把我们的所有这些过滤器加载到咱的过滤链中,它的加载过程就是咱们刚才看到的里边的。这个地方有一个粒子集合,里边就是放我们所有这个要进行加载的这些过滤器啊,在这里边做到就是里边有一个粒子集合,呃,我截的稍微小点啊。是这个位置。然后在它里边用了一个叫get filter方法,大家也看到了,用了迭代器把这些方法都加载进来,然后最终进行我们的具体操作,所以这个就是咱们这个spring security,它过滤器的一个加载的一个过程。
09:12
它的过程就是我们看到的这么一个流程,给各位再快速总结变啊,这是咱们通过看源码看到它怎么加载的,首先里边第一部分,因为咱用sir boot里边不需要配置,但你不用sirt里边需要第一个配置过滤器叫delegating filter process,在这个过滤器中,Do filter里边做了初始化这个方法,咱看看这个方法,然后里边得到一个过滤器叫filter chain pro,在filter chin policy里边我们做法就是在这过程中。咱们得到所有的过滤器给它加载到咱的过滤电中,包括这个方法咱也看到了,里边就是做这个迭代器,然后在这里边用这个get filter的方法把它完成了一个加载,所以这个就是screen,它的过滤器是如何进行加载的,咱通过看源码把这过程给各位也做了一个基本的介绍,所以大家把这过程给它要知道啊,然后里边涉及到这么几个相关的这个对象,包括delegating filter policy filter chain policy,还有一个security filter chain。
10:24
这个我们就介绍完成了。
我来说两句