Spring Security 第一节 架构篇

前言:

     这两天做项目的时候,发现自己对Spring Security 的理解非常的浅薄,思来想去,决定在网上找教程学习了下,并在这里发文记录下自己的的学习历程。

Spring Security 在后端中的位置

Spring Security 是一个非常复杂,高度定制化的安全框架。要想系统地学习它,就要高屋建瓴,先从全局角度来看它所处的位置。学过Java Web的朋友们都知道:前端发来的请求先要经过多个原生Filter, 最后才能到达后端。Spring Security 本质上其实就是一个过滤器。这里就要谈到第一个类:DelegatingFilterProxy. 因为Spring Security里有多个过滤器,Spring Secutiy 是把这些过滤器包装起来,作为一个整体来使用。DelegatingFilterProxy就是起到这样的作用,这样讲可能还是有点抽象晦涩不太好懂,举个例子:

 我们假设有3个农民,张三,李四,王二麻子,他们手里头有100吨香蕉要卖到韩国,韩国XXX 会社就是做农业贸易的,但是跨国贸易很复杂,显然他们不能以个人的名义做这事。

于是他们三找了个专业的记账公司注册了个公司,公司名就叫幸福的小猪。公司的成员就是张三,李四,王二麻子,这下问题就解决了。 

回归正题,在这个案例中张三,李四,王二麻就相当于三个Spring Security 的过滤器,他们要组建的公司 就相当于原生Filter. DelegatingFilterProxy 类似于记账公司,用于帮助把多个Spring Security 过滤器变成原生的Filter,

也就是说: 从上帝视角来看,Spring Security 在我们的应用中就是一个过滤器

张三,李四,王二麻--------------------------------------------------公司

Spring Security 的过滤器们-----------------------------------------组成一个原生Filter

这里我从官网上找到了架构图,

做一个小小的解释:

Client: 前端

Filter0,Filter2: 过滤器

DelegatingFilterProxy: 是Spring Security 的最外层,有了它, 我们的Spring Security 就是一个过滤器了

问题来了,为什么要把我们的Spring Security 变成原生Filter 呢? 因为只有这样我们的外部请求才能进入Spring Security. 否则Spring Security 接收不到任何的请求,也就废了。

DelegatingFilterProxy 内部结构

在 DelegatingFilterProxy  里面是一个FilterChainProxy  .  这个类的主要用处是管理(也可以说是保存)多个过滤器链,注意不是过滤器,是过滤器链,可以根据请求的路径 不同, 选择不同的过滤器链来处理请求。下面的架构图,可以看出,当我们的请求 是以api 开头的,就用SecurityFilterChain0

 

 SecurityFilterChain的结构

SecurityFilterChain 的作用就很好理解了, 过滤器链中保存了多个过滤器,这里我就不过多解释了

总结

第一节就是开门见山地来讲了下Spring Security 架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值