当前位置: 首页 > article >正文

Spring Security(maven项目) 3.0.2.5版本上

前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度

温故知新:

在前五篇中,我们分别完成以下内容:

        第一篇:初步认识Spring-Security框架

        第二篇:初步体验Spring-Security框架

        第三篇:进一步认识Spring-Security框架

        第四篇 - 上:初步认识Security认证架构

        第四篇 - 下:初步体验Security认证架构

在本次温故知新中,我们将第一篇中的三个视角进行修改

在第一篇中,我们从三个视角去认识Spring-Security框架——分别是:是什么,为什么,怎么用

其中对为什么的描述十分抽象,十分难懂,所以进行了修改

原本

迭代后

旧内容:

通过三个独立的视角去审视问题,看到的都是不连贯的答案

新内容:

通过看——达到第一个阶段——是什么

通过实践-思考-实践-思考——达到第二个阶段——为什么

通过思考去指导实践——达到第三个阶段——怎么用

一个阶段一个阶段,一个问题一个答案,每个答案能连城一条线,有了这条线,使用Security也会更加简单

第二,第三篇的内容没有过多的翻新

第四篇的翻新来源于其认证架构而不是框架架构,架构和框架的区别就是一个是骨头,一个带肉的骨头,SecurityContextHolder是一个带有肉的骨头,是骨头中的一部分内容

真实原因:

在这一期温故知新中,作者得到了一个结论——SecurityContextHolder是Security为什么是一个强大且易于使用的地基

然后第五篇标题为用户/密码 认证,一不小心多看了一眼官方文档目录,SecurityContextHolder是认证架构里的

这么一看,之前的三角视角就改为了现在的阶段;这么一看,上面的结论也就无用了

抽象之后就是这样↓

正片:

第五篇:读取用户名/密码

第六篇:Security架构图

第五篇:读取表单登录用户名/密码

我们将第五篇,第六篇合在一起讲

Tip:表单是什么,是通过HTML里的<form></form>标签获取的

Security架构图

这是一个经典的Filter过滤器,也是Security的基础架构图

如果你看过之前的温故知新,你应该对这张图有映像

这张图是我们上一轮实践的结论图

Client相对于前端客户端,前端客户端发送请求,会先进入到我们的Spring-Security框架。

拿上一期的实践,类比:

在第二篇的体验Security中,我们在不完成登录操作就无法访问其他页面;拿某乎,CSDN来类比,某乎的内容需要登录了才能看完,CSDN有一些文章需要关注才能看完

例如,我们在看上面的平台文章,平台向客户端发生请求信息,如果请求信息没有通过认证,那么这个请求将会失效

这两个图是对上面的抽象化

在实际体验中,确确实实是这样,没有登录、关注——确实是没办法看到想看的文章

通过类比,我们还能知道Vip就是这样来的,为什么Vip会有特权,因为在认证信息中包含了这类信息认证

考考读者,除了上面的内容还有没有类似的

可以用常识,认识,可以用现实,window系统,安卓

去过动物园吧,没?进过小区吧,没?上个学吧,有!有喜欢的菜吧,有!过滤水的过滤器见过吧,没?总有一个你干过的

上学要进校门,校门都有一个保安,保安就相对于认证信息,通过了就放我们进,没通过就不让我们进

喜欢吃什么菜,就是由自己的爱好选择的,这些菜带有认证信息,喜欢吃!通过,吃,不喜欢吃,看都不看

官方也是这么认为的,只不过,官方的内容更加详细

之前的内容错了,因为这个信息判断是在客户端里面进行的,而不是客户端,前端发送一个带有认证信息的请求,进入到客户端,进入请求信息进入到容器内,一层一层过滤

我知道你没见过,那我整一个简单的给你看,水就相对于这里面的请求,这个装满东西的杯子就是容器,容器里的内容就是一个个过滤器,过滤器的作用是什么?

判断出不可过滤的内容,过滤水是怎么判断的?

通过物质的属性,去判断,例如木头渣子是怎么在小石头被过滤掉的?

小石头组成的过滤层有缝隙,这些缝隙正好可以防止木头渣子

用一个最简单的代码来表示就是

IF(x != "小木头"){

        return "通过"

}

简易版本

那么过滤器顺序重要吗?

现实中你可能拿不出同样的容器,但是官方告诉我们,顺序很重要

为什么十分重要呢?

就拿本平台的内容,登录和关注是两个Filter过滤器

你登录了能看到一部分内容,你不登录也能看到一部分内容

第一层:登录

第二层:关注

其中不登录也能看到内容,也就是第一层形同虚设

第二层,进行了内容覆盖,不通过的只能看到百分之20,剩下百分之80需要进行过滤

那么在我们具体实践中,发现没?其实不登录是没办法进行关注,那他们就是第一层还有一个额外的过滤物质

第一层的认证和第二层的认证是紧密关联的

虽然不够完整,但是这是一个大概的内容

小结:

我们认识了Security架构的基础

这是我们内化后的内容

继续

看之前先翻译

第一句:FilterChain Usage Example        FilterChain 使用示例

第二句:do something before the rest of the application        在应用程序的其余部分之前执行某些操作

第三句:invoke the rest of the application        调用应用程序的其余部分

第四局:do something after the rest of the application        在应用程序的其余部分之后执行某些操作

以防大家不认识三个形参:ServletRequest 请求、ServletResponse 响应、FilterChain 过滤容器

请求,响应应该都没问题,这个链在前面的出现过

容器

内化一下就是:

现在回来看这段代码就容易了

在过滤器前,需要使用一些手段获取请求,即过滤器前

调用FilterChain容器,传入请求,或者响应处理结果

其余操作

小结:

过滤容器由三部分组成,请求,响应,若干个过滤器

代码的运行是有先后逻辑的,所以过滤器的顺序在代码的诞生就已经决定了

在作者的观点里,始终秉承编程语言是继承之自然语言之优点而诞生的人机交互语言

在完成了代码的认识后,可以找到现实中相对应的事物进行对比,学习不仅需要广度还需要深度,但是一般情况来说,有了深度就会有广度,知道了这一个事物的底层逻辑,就能知道这一类事物的底层逻辑

在这些内容中,我们完成了第一个

进行一次彻底的总结:

第一条:Security是一个强大且易于使用的框架,源于其架构之简单稳定;

第二条:其架构由三部分组成:请求,过滤器,响应;

这里我就在想,Security的过滤器可以换吗?Security的过滤器可以自定义吗?可以自定义插入吗?如果可以换,可以自定义,自定义插入那么就可以回答这句话——Security为什么是一个强大且易于使用的框架


http://www.kler.cn/a/488580.html

相关文章:

  • 跟着逻辑先生学习FPGA-第六课 无源蜂鸣器发声实验
  • 六、Angular 发送请求/ HttpClient 模块
  • 算法(二)——一维差分、等差数列差分
  • 在Windows环境下搭建无人机模拟器
  • “**H5**” 和 “**响应式**” 是前端开发中常见的术语,但它们的概念和使用场景有所不同
  • Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!
  • 12 USART串口通讯
  • IEC61850遥控-增强安全选控是什么?
  • 安卓硬件加速hwui
  • 一个基于Spring Boot的简单网吧管理系统
  • 实现Android应用开机自启功能
  • 【免费开源】积木JimuBI大屏集成ruoyiVue
  • Nginx反向代理请求头有下划线_导致丢失问题处理
  • yum系统报错:SyntaxError: multiple exception types must be parenthesized
  • 【git】-2 分支管理
  • 基于Springboot + vue实现的办公用品管理系统
  • Redis 安装与 Spring Boot 集成指南
  • 江科大STM32入门——看门狗笔记整理
  • 开源生成式物理引擎Genesis,可模拟世界万物
  • 如何配置 CentOS 7 的 Yum 源并切换到国内镜像源
  • 鸿蒙面试 2025-01-10
  • Leetcode 322. 零钱兑换 动态规划
  • golang使用Websocket实例
  • 【Python】Python与C的区别
  • Python AI教程之十六:监督学习之决策树(7)和其它算法的比较
  • 图像处理|腐蚀操作