1-常用过滤器介绍

简介: 本文介绍了Spring Security核心过滤器链中15个关键过滤器的作用,涵盖安全上下文管理、认证、授权、CSRF防护、会话控制及异常处理等机制,揭示其基于AOP思想的请求拦截与处理流程,帮助理解Security底层工作原理。

过滤器是一种典型的AOP思想,关于什么是过滤器就不赘述了,读者们应该也都知道凡是web工程都能用过滤器。 接下来咱们就一起看看Spring Security中这些过滤器都是干啥用的,源码我就不贴出来了,有名字,大家可以自己在idea中Double Shift去。我也会在后续的学习过程中穿插详细解释。

1. org.springframework.security.web.context.SecurityContextPersistenceFilter

首当其冲的一个过滤器,作用之重要自不必多言。 SecurityContextPersistenceFilter主要是使用SecurityContextRepository在session中保存或更新一个SecurityContext,并将SecurityContext给以后的过滤器使用,来为后续filter建立所需的上下文。

SecurityContext中存储了当前用户的认证以及权限信息。

2. org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter

此过滤器用于集成SecurityContext到Spring异步执行机制中的WebAsyncManager

3. org.springframework.security.web.header.HeaderWriterFilter

向请求的Header中添加相应的信息,可在http标签内部使用security:headers来控制

4. org.springframework.security.web.csrf.CsrfFilter

csrf又称跨域请求伪造,SpringSecurity会对所有post请求验证是否包含系统生成的csrf的token信息, 如果不包含,则报错。起到防止csrf攻击的效果。

5. org.springframework.security.web.authentication.logout.LogoutFilter

匹配URL为/logout的请求,实现用户退出,清除认证信息。

6. org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter

认证操作全靠这个过滤器,默认匹配URL为/login且必须为POST请求。

7. org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter

如果没有在配置文件中指定认证页面,则由该过滤器生成一个默认认证页面。

8. org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter

由此过滤器可以生产一个默认的退出登录页面

9. org.springframework.security.web.authentication.www.BasicAuthenticationFilter

此过滤器会自动解析HTTP请求中头部名字为Authentication,且以Basic开头的头信息。

10. org.springframework.security.web.savedrequest.RequestCacheAwareFilter

通过HttpSessionRequestCache内部维护了一个RequestCache,用于缓存HttpServletRequest

11. org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter

针对ServletRequest进行了一次包装,使得request具有更加丰富的API

12. org.springframework.security.web.authentication.AnonymousAuthenticationFilter

当SecurityContextHolder中认证信息为空,则会创建一个匿名用户存入到SecurityContextHolder中。 spring security为了兼容未登录的访问,也走了一套认证流程,只不过是一个匿名的身份。

13. org.springframework.security.web.session.SessionManagementFilter

SecurityContextRepository限制同一用户开启多个会话的数量

14. org.springframework.security.web.access.ExceptionTranslationFilter

异常转换过滤器位于整个springSecurityFilterChain的后方,用来转换整个链路中出现的异常

15. org.springframework.security.web.access.intercept.FilterSecurityInterceptor

获取所配置资源访问的授权信息,根据SecurityContextHolder中存储的用户信息来决定其是否有权

限。


好了!这一堆排山倒海的过滤器介绍完了。 那么,是不是spring security一共就这么多过滤器呢?答案是否定的!随着spring-security.xml配置的添加,还 出现新的过滤器。

那么,是不是spring security每次都会加载这些过滤器呢?答案也是否定的!随着spring-security.xml配置的修改,有些过滤器可能会被去掉。我们一步步往下走着看。

目录
相关文章
|
5月前
|
缓存 Java Nacos
@RefreshScope热更新原理
本文深入解析Spring Cloud中@RefreshScope注解实现配置热更新的原理。通过分析其组合注解特性,重点剖析@Scope("refresh")如何借助动态代理与缓存机制,在配置变更时触发Bean重建,结合Nacos实现配置自动刷新,从而达到无需重启应用即可生效的效果。
185 6
@RefreshScope热更新原理
|
人工智能 API UED
即刻拥有DeepSeek-R1满血版
阿里云推出基于R1满血版DeepSeek的AI解决方案,助您高效学习与工作!访问专属链接进入详情页,按指引免费体验。具体步骤包括:注册阿里云账号、开通百炼模型服务、获取API-KEY、配置Chatbox客户端并测试对话功能。通过简单操作,即可调用DeepSeek-R1模型,实现智能化交互。快速上手,开启AI新体验!
768 7
|
5月前
|
运维 Devops 开发工具
生产环境缺陷管理
git-poison基于go-git实现分布式bug追踪,解决多分支开发中bug漏修、漏发问题。通过“投毒-解毒-银针”机制,自动化卡点发布流程,降低协同成本,提升发布安全性与效率,已在大型团队落地应用。
77 0
|
5月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队中多环境自动化发布流程,涵盖DEV、TEST、PRE、PROD各环境职责,结合CI/CD平台实现分支管理、一键部署,并通过Skywalking等工具高效排查日志,提升发布效率与系统稳定性。
89 0
生产环境发布管理
|
5月前
|
NoSQL Linux Shell
2-MongoDB单机部署
本文介绍了MongoDB在Windows和Linux系统下的安装、配置与启动方法,包括下载地址、版本选择、解压安装、命令行及配置文件启动方式,并详细说明了如何通过Shell和图形化工具Compass连接数据库。同时提供常见问题解决方案及附件中的各环境安装包链接,便于快速部署使用。
143 0
|
5月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)高效发布。涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理、一键发布与回滚机制,并结合Skywalking实现日志链路追踪,提升发布效率与问题排查速度。(238字)
72 0
|
5月前
|
安全 Java 数据安全/隐私保护
认识SpringSecurity
SpringSecurity是Java生态中主流的权限管理框架,核心功能包括认证、鉴权及安全防护。支持表单、OAuth2、JWT等多种认证方式,提供URL级、方法级鉴权,支持RBAC、SPEL表达式控制,并具备CSRF等攻击防御能力。其架构基于过滤器链,通过FilterChainProxy实现多安全过滤链,灵活处理安全异常,保障系统安全。
|
5月前
|
XML JSON Java
什么是RESTful
RESTful是一种面向资源的API设计规范,强调使用统一的URI表示资源,通过HTTP动词(GET、POST、PUT、DELETE)操作资源,实现行为标准化。相比传统接口路径混乱、动词冗余的问题,RESTful结构清晰、易于理解与扩展,提升前后端协作效率和系统可维护性。
110 0
|
5月前
|
前端开发 程序员 开发者
常见注解及使用说明
本文介绍了SpringMVC中@RequestMapping注解的作用与原理,讲解其如何将前端HTTP请求映射到后端控制器方法,并列举了常用衍生注解如@GetMapping、@PostMapping等,帮助开发者理解接口路径的定义机制,实现前后端对接。
119 0
|
人工智能 自然语言处理 Java
一文轻松拿下DeepSeek满血版的Api接口接入
本文详细介绍了如何基于阿里云百炼平台快速接入DeepSeek满血版API接口,实现文本问答的智能操作。通过简单的步骤,包括开通平台、创建API-KEY、配置环境变量、安装SDK和调用模型,即使是编程新手也能在5分钟内完成配置。DeepSeek-R1模型拥有671B参数,在数学、代码和自然语言推理等任务上表现出色。文章还提供了完整的Java代码示例,帮助读者轻松上手。链接:[解决方案](https://www.aliyun.com/solution/tech-solution/deepseek-r1-for-platforms?utm_content=g_1000401616)
2476 1
一文轻松拿下DeepSeek满血版的Api接口接入

热门文章

最新文章