1-常用过滤器介绍

简介: 本文介绍了Spring Security中的核心过滤器链,涵盖SecurityContextPersistenceFilter、CsrfFilter、LogoutFilter等15个关键过滤器的作用,解析其在认证、授权、会话管理等方面的功能,并说明过滤器的加载具有配置依赖性,非固定不变。

过滤器是一种典型的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配置的修改,有些过滤器可能会被去掉。我们一步步往下走着看。

相关文章
|
11月前
|
小程序 视频直播 数据安全/隐私保护
如何在1v1视频直播交友APP中实现防录屏防截屏功能?
婚恋交友市场快速增长,1v1社交应用海外投放增86.49%,中东、东南亚及北美需求旺盛。用户偏好私密高效交流,国内“云相亲”兴起。开发需合规备案、实名认证,并防范诈骗。本文详解原生APP防录屏技术:Android通过MediaProjection检测,iOS监听UIScreen状态,结合动态水印、远程销毁等增强防护,平衡体验与安全。
|
9月前
|
存储 弹性计算 人工智能
阿里云服务器最新租用费用深度解析:轻量、ECS与GPU全价位测评
阿里云服务器租用费用多少钱1年?最新阿里云服务器租用费用优惠价格表,轻量2核2G轻量服务器一年68元,折合5.6元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年(企业专享),2核4G4M轻量服务器298元一年,4核8G服务器955元一年,4核16G10M服务器70元1个月、210元3个月,8核32G服务器160元1个月、480元3个月。本文深度解析阿里云轻量、ECS与GPU价格。阿里云云服务器配置可以选择2核2G3M、2核4G5M带宽、2核8G、4核8G、4核16G、8核16G、8核32G等配置可选。
|
11月前
|
人工智能 缓存 并行计算
用数学重构 AI的设想:流形注意力 + 自然梯度优化的最小可行落地
本文提出两个数学驱动的AI模块:流形感知注意力(D-Attention)与自然梯度优化器(NGD-Opt)。前者基于热核偏置,在局部邻域引入流形结构,降低计算开销;后者在黎曼流形上进行二阶优化,仅对线性层低频更新前置条件。二者均提供可复现代码与验证路径,兼顾性能与工程可行性,助力几何感知的模型设计与训练。
755 1
|
9月前
|
缓存 NoSQL 调度
项目《神领物流》
本项目为基于微服务架构的智能物流系统,涵盖用户端、快递员端、司机端及管理端。采用Spring Cloud、RabbitMQ、Redis、MongoDB、Neo4j等技术,实现智能调度、路线规划、运费计算、权限管理、多级缓存与分布式事务等功能,提升运输效率,降低运营成本。
|
10月前
|
数据采集 弹性计算 运维
云服务诊断:一键定位异常,快速恢复业务
云服务诊断是阿里云推出的免费运维工具,提供“资源健康状态”和“问题诊断”两大功能。可精准监控每个实例的健康状况,支持一键全量诊断与常见问题场景快速排查,帮助用户迅速定位并修复ECS、SLB、EIP等资源异常,提升运维效率,保障业务稳定运行。
621 22
|
9月前
|
JavaScript 前端开发 小程序
Vue为何能稳居前端框架主流宝座
自2014年发布以来,Vue凭借“低门槛、渐进式、生态完善、持续进化”四大优势,迅速跻身前端主流框架。其简洁的模板语法降低学习成本,灵活架构适配各类项目,官方生态与活跃社区提升开发效率,Vue3性能升级与跨平台能力更支撑大厂核心业务,成为中小企业与头部企业共同选择,地位日益稳固。
474 0
|
10月前
|
人工智能 算法
AI驱动的销售智能体:重塑企业销售全流程新范式,开辟新增长
在流量成本攀升、市场竞争加剧的当下,以AI Agent为核心引擎的销售智能体,正凭借大模型的强大能力,为企业销售全链路赋能,成为降本增效与创新突破的关键抓手。
|
缓存 负载均衡 算法
HTTPS对性能的一些影响
HTTPS对性能的一些影响
1181 9
CTF — 拨号音识别
CTF — 拨号音识别
662 1
|
测试技术 编译器 PHP
PHP 7与PHP 8的性能比较
本文通过对比分析PHP 7和PHP 8在不同场景下的性能表现,揭示新版本在执行速度、内存占用等方面的改进。利用实际测试数据支撑结论,为开发者提供升级决策的依据。