魏晓东 发表于 2024-11-20 21:04:21

Spring Security 第一节 架构篇

https://i-blog.csdnimg.cn/direct/7cdff38240ee4218a3e7b80f41c73883.jpeg

前言:

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

Spring Security 在后端中的位置

Spring Security 是一个非常复杂,高度定制化的安全框架。要想系统地学习它,就要高屋建瓴,先从全局角度来看它所处的位置。学过Java Web的朋侪们都知道:前端发来的请求先要经过多个原生Filter, 最后才气到达后端。Spring Security 本质上其实就是一个过滤器。这里就要谈到第一个类:DelegatingFilterProxy. 由于Spring Security里有多个过滤器,Spring Secutiy 是把这些过滤器包装起来,作为一个整体来利用。DelegatingFilterProxy就是起到如许的作用,如许讲可能还是有点抽象晦涩不太好懂,举个例子:
 我们假设有3个农民,张三,李四,王二麻子,他们手里头有100吨香蕉要卖到韩国,韩国XXX 会社就是做农业商业的,但是跨国商业很复杂,显然他们不能以个人的名义做这事。
https://i-blog.csdnimg.cn/direct/333bade76701453c88d32f00229bdf42.jpeg
于是他们三找了个专业的记账公司注册了个公司,公司名就叫幸福的小猪。公司的成员就是张三,李四,王二麻子,这下题目就办理了。 
https://i-blog.csdnimg.cn/direct/9535a8d0b0c44b3a974f2603591b7220.jpeg
回归正题,在这个案例中张三,李四,王二麻就相称于三个Spring Security 的过滤器,他们要组建的公司 就相称于原生Filter. DelegatingFilterProxy 雷同于记账公司,用于帮助把多个Spring Security 过滤器变成原生的Filter,
也就是说: 从上帝视角来看,Spring Security 在我们的应用中就是一个过滤器
张三,李四,王二麻--------------------------------------------------公司
Spring Security 的过滤器们-----------------------------------------构成一个原生Filter

这里我从官网上找到了架构图,
做一个小小的解释:
Client: 前端
Filter0,Filter2: 过滤器
DelegatingFilterProxy: 是Spring Security 的最外层,有了它, 我们的Spring Security 就是一个过滤器了
https://i-blog.csdnimg.cn/direct/78857095fd624c919754ce82ffdac70d.png
题目来了,为什么要把我们的Spring Security 变成原生Filter 呢? 由于只有如许我们的外部请求才气进入Spring Security. 否则Spring Security 接收不到任何的请求,也就废了。
DelegatingFilterProxy 内部结构

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

 https://i-blog.csdnimg.cn/direct/76d29db5d4e24c7aa623b71f9030d54a.png
 SecurityFilterChain的结构

SecurityFilterChain 的作用就很好理解了, 过滤器链中生存了多个过滤器,这里我就不外多解释了
https://i-blog.csdnimg.cn/direct/e857a4a8580b45fcb758e54c83caf144.png
总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Spring Security 第一节 架构篇