✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人
个人主页:Leo的博客
当前专栏: Java从入门到精通
✨特色专栏: MySQL学习
本文内容:SpringSecurity6 | 回顾Filter
️个人小站 :个人博客,欢迎大家访问
个人知识库: Leo知识库,欢迎大家访问
学习参考 :
大家好,我是Leo哥,上一节我们通过一个HelloWorld案例,以代码的方式实现了我们项目添加登录鉴权功能,只是通过一个就轻松实现了这个功能。那么他其中的原理是什么呢,带着疑问,我们后面几节课主要学习一下如何实现这些的原理。好了,话不多说让我们开始吧。
后面几篇文章,我们会带着这些问题去研究SpringSecurity,并找出问题的答案。
一个请求发出之后的基本流程是怎么样的呢,我们的请求是如何被拦截的呢,下面我们简单的来看一下流程图。
流程详解:
SpringSecurity对于Servlet的支持是基于Servlet Filter的。也就是说SpringSecurity的实现技术手段也是Filter。
SpringSecurity 的 Servlet 支持是基于 Servlet Filter 的,因此首先大致了解一下 Filter 的作用是有帮助的。下图显示了单个 HTTP请求的处理程序的典型分层。
客户端向应用程序发送请求,容器创建一个 FilterChain
,其中包含 Filter
实例和应处理 HttpServletRequest
是 DispatcherServlet
的实例。最多一个 Servlet
可以处理单个 HttpServletRequest
和 HttpServletResponse
。然而,多个 Filter
可用于:
Filter
instances or the Servlet
from being invoked. In this case, the Filter
typically writes the HttpServletResponse
.Filter
实例或 Servlet
。在这种情况下, Filter
通常写入 HttpServletResponse
。HttpServletRequest
or HttpServletResponse
used by the downstream Filter
instances and the Servlet
.Filter
实例和 Servlet
使用的 HttpServletRequest
或 HttpServletResponse
。public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
// do something before the rest of the application
chain.doFilter(request, response); // invoke the rest of the application
// do something after the rest of the application
}
由于 Filter
仅影响下游 Filter
实例和 Servlet
,因此调用每个 Filter
的顺序非常重要。
以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。
如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。