常用过滤器介绍

简介: Spring Security通过过滤器链实现安全控制,如SecurityContextPersistenceFilter管理上下文,UsernamePasswordAuthenticationFilter处理登录,CsrfFilter防范跨站请求伪造。各过滤器分工明确,按需加载,构成灵活的安全架构。(238字)

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

相关文章
|
2月前
|
缓存 NoSQL Redis
Day08 每日必会
深入解析Redis核心机制:涵盖缓存三剑客(穿透、击穿、雪崩)成因与应对;持久化、过期与淘汰策略原理;哨兵选举流程;主从同步机制(全量与增量);以及“单线程”模型的真相,全面掌握Redis高性能背后的理论基础。
|
2月前
|
测试技术
发布模式
蓝绿部署是一种快速、低风险的应用发布策略,通过维护两套独立系统(运行中的“绿色”与待发布的“蓝色”),实现无缝切换与快速回滚,减少发布中断。测试稳定后流量切至蓝色系统,原绿色系统可下线。适用于内聚性强、切换简单的系统。不同于金丝雀发布(渐进式替换)和A/B测试(效果对比),蓝绿部署聚焦于平稳上线,保障稳定性。
|
16天前
|
人工智能 自然语言处理 SEO
为什么很多企业做了GEO却没效果?GEO专家尹邦奇的三个关键判断
2024年起,“GEO优化”成企业新焦点——争夺AI的“回答权”。但90%失败源于认知滞后:误将SEO逻辑套用GEO。三大误区:标题党式改写、营销话术替代专家判断、内容缺乏确定性结论。真正有效的GEO,是结论先行、边界清晰、结构可解析的“专家型内容”,本质是赢得AI信任。
66 14
|
小程序 视频直播 UED
电商直播小程序系统开发:打造“直播+电商+社交”闭环
电商直播小程序成为商家与消费者互动的关键,通过微信提供的实时视频工具,实现流畅购物体验。系统功能包括直播预览、主播管理、红包互动、用户管理及闭环购物。它强化品牌效应,利用私域流量,简化流程并转化会员。开发涉及需求分析、设计规划、功能开发、测试优化及上线维护。企业需关注用户体验,以保持竞争力。寻求开发合作可联系相关人员。
|
2月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation工具,可使用提供的百度云链接下载。通过VMware创建虚拟机,参考指定教程完成安装,默认用户名为root,密码由用户自设。确保电脑满足运行需求。(236字符)
|
2月前
|
运维 Devops 开发工具
生产环境缺陷管理
为解决大型团队多分支开发中bug漏修、漏发导致的生产事故,我们基于go-git打造了分布式工具git-poison,实现bug全链路追溯与自动化卡点。通过“投毒-解毒-银针”机制,精准识别未修复bug,阻塞高风险发布,降低协同成本,杜绝人为疏漏,已在内部落地并稳定运行一年,显著提升发布安全性与效率。
|
2月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,助力用户全面掌握SQL使用情况,精准识别性能瓶颈与无效请求,提升日志分析效率与资源治理水平。
|
2月前
|
存储 消息中间件 开发框架
应用架构图
在业务架构基础上,技术架构将需求转化为技术实现,涵盖分层设计、技术选型与关键技术关系。单体架构通常分为表现、业务、数据和基础四层;分布式架构则通过服务调用体现应用间及外部系统的逻辑与通信关系,明确边界,支撑系统集成与扩展。(239字)
|
2月前
|
uml C语言
系统时序图
时序图(Sequence Diagram)是UML中用于描述对象间消息传递时间顺序的交互图。横轴为对象,纵轴为时间,通过生命线、控制焦点和消息等元素,展示系统动态协作过程,强调交互的时序性,适用于刻画并发与调用流程。
|
2月前
|
数据采集 领域建模 数据库
领域模型图(数据架构/ER图)
数据架构核心输出为ER图,包含实体、关系与属性。通过四色原型法进行领域建模:红色MI表示时标事件,绿色PPT为参与方-地点-物品,黄色Role是角色,蓝色DESC为描述信息。以风控系统为例,先梳理业务流程,识别MI(如风险识别、告警通知),提取PPT实体(如规则、异常事件),补充Role角色与DESC描述,最终提炼出ER图,明确实体间一对一、一对多或多对多关系,构建清晰的数据模型。(239字)