SpringSecurity过滤器链加载原理

通过前面十五个过滤器功能的介绍,对于SpringSecurity简单入门中的疑惑是不是在心中已经有了答案了呀? 但新的问题来了!我们并没有在web.xml中配置这些过滤器啊?它们都是怎么被加载出来的?

DelegatingFilterProxy

我们在web.xml中配置了一个名称为springSecurityFilterChain的过滤器DelegatingFilterProxy,接下我直接对 DelegatingFilterProxy源码里重要代码进行说明,其中删减掉了一些不重要的代码,大家注意我写的注释就行了!

第二步debug结果如下

由此可知,DelegatingFilterProxy通过springSecurityFilterChain这个名称,得到了一个FilterChainProxy过滤器,最终在第三步执行了这个过滤器。

FilterChainProxy

注意代码注释!注意代码注释!注意代码注释!

第二步debug结果如下图所示,惊不惊喜?十五个过滤器都在这里了!

再看第三步,怀疑这么久!原来这些过滤器还真是都被封装进SecurityFilterChain中了。

SecurityFilterChain

最后看SecurityFilterChain,这是个接口,实现类也只有一个,这才是web.xml中配置的过滤器链对象!

总结

通过此章节,我们对SpringSecurity工作原理有了一定的认识。但理论千万条,功能第一条,探寻底层,是 为了更好的使用框架。

那么,言归正传!到底如何使用自己的页面来实现SpringSecurity的认证操作呢?要完成此功能,首先要有一套 自己的页面!

SpringSecurity过滤器链加载原理相关推荐

  1. SpringBoot 手写过滤器amp;加载第三方过滤器

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36367789/article/details/81665638 如何手写一个过滤器呢.假设我 ...

  2. SpringSecurity过滤器链汇总

    SpringSecurity过滤器链 认证过程 转载于:https://www.cnblogs.com/chenny3/p/10226123.html

  3. 内嵌WEB服务器加载原理

    内嵌WEB服务器加载原理 理解里面的tomcat是如何启动的 Startup.bat Server.start() 1,概述 我们在使用springboot项目的时候并没有使用外部的tomcat,那么 ...

  4. datax底层原理_Datax 插件加载原理

    Datax 插件加载原理 插件类型 Datax有好几种类型的插件,每个插件都有不同的作用. reader, 读插件.Reader就是属于这种类型的 writer, 写插件.Writer就是属于这种类型 ...

  5. 浅析Android字体加载原理

    浅析Android字体加载原理 前言 之前在处理系统字体问题的时候,可借鉴的资料很少,遇到了很多坑,不得不了解Android字体加载原理,现抽空写一篇总结,来加深自己对这块的理解. 内容 概述 And ...

  6. Springboot 拦截器链 - 加载拦截器

    Springboot 拦截器链 - 加载拦截器 1.创建拦截器 // 创建拦截器需要实现 HandlerInterceptor 接口 @Slf4j public class HandleInterce ...

  7. Unity导表工具Luban插件的数据加载原理与优化

    文章目录 1. 配置Luban并测试 2. Luban 数据加载原理 3. 根据工程进行懒加载优化 3.1 增加公共接口与接口实现方法 3.2 外部提供获取数据的方法 3.3 对Luban中的导表模板 ...

  8. 【Docker镜像文件加载原理生产中重新制作并提交镜像文件案例演示】

    一.知识回顾 之前的内容都帮你整理好了,在这里哟! [0.Docker相关目录文章整理,可自行查看,包含多节内容] [1.Docker详细安装部署&阿里镜像地址配置] [2.Docker架构& ...

  9. 老调重弹:JDBC系列之驱动加载原理全面解析)

    前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读 ...

最新文章

  1. 基于RFID的防伪系统设计
  2. OpenStack 关闭安全组
  3. mysqldump导入导出mysql数据库
  4. 前端学习(2887):如何短时间内实现v-for proxy代理
  5. 将方孔分段的lisp_AutoLisp编写工程地质剖面图小工具
  6. 毕设题目:Matlab瑕疵检测
  7. java hssfworkbook 乱码_java各种乱码汇总
  8. AppData、Roaming、Locallow等文件夹中常见大文件夹有哪些、有什么用以及如何清理方法参考资料
  9. FIN断开-TCP segment of a reassembled PDU-原因分析
  10. DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided
  11. hadoop tyarn冲突_hadoop集群启动yarn时出现的问题和解决方法
  12. 使用proteus仿真验证基尔霍夫定律
  13. HTML标签与CSS样式
  14. 抓包工具有哪些你知道吗?今天给你们介绍四款最受欢迎的抓包神器
  15. python操作sqlite数据库
  16. 构建maven时No archetypes currently available的解决方法
  17. 【knex】 knex.js中 orderBy多个字段排序
  18. mybatis的JavaType和ofType区别
  19. 俄罗斯邮箱Mail.ru的登录及获取邮箱内容(c#实现)
  20. 如何升级或更换PC的无线卡

热门文章

  1. Java虚拟机一览表
  2. C++ template 学习归纳2
  3. AMF(Action Message Format)其它语言对象转ActionScript对象[转]
  4. 纯CSS实现气泡聊天框的方法
  5. 只要你想学,分分钟钟用H5教会你玩转魔方
  6. MyBatis的高级映射之多对一
  7. 你的 Docker 应用是安全的吗?
  8. navicat for mysql 如何将表ID排序重1开始?
  9. memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论
  10. citrix协议ICA技术原理