常用过滤器介绍

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

相关文章
|
小程序 视频直播 UED
电商直播小程序系统开发:打造“直播+电商+社交”闭环
电商直播小程序成为商家与消费者互动的关键,通过微信提供的实时视频工具,实现流畅购物体验。系统功能包括直播预览、主播管理、红包互动、用户管理及闭环购物。它强化品牌效应,利用私域流量,简化流程并转化会员。开发涉及需求分析、设计规划、功能开发、测试优化及上线维护。企业需关注用户体验,以保持竞争力。寻求开发合作可联系相关人员。
|
6月前
|
人工智能 自然语言处理 SEO
为什么很多企业做了GEO却没效果?GEO专家尹邦奇的三个关键判断
2024年起,“GEO优化”成企业新焦点——争夺AI的“回答权”。但90%失败源于认知滞后:误将SEO逻辑套用GEO。三大误区:标题党式改写、营销话术替代专家判断、内容缺乏确定性结论。真正有效的GEO,是结论先行、边界清晰、结构可解析的“专家型内容”,本质是赢得AI信任。
209 14
|
7月前
|
Kubernetes Java 应用服务中间件
开发篇(脚手架下载)
本文介绍基于SpringCloud+Kubernetes的微服务开发实践,聚焦EDAS 3.0在项目初始化与本地启动环节的开发者体验优化。通过阿里云start.aliyun.com脚手架快速生成标准工程,结合Cloud Toolkit插件一键拉起本地注册中心,实现应用零配置接入,大幅提升开发效率。后续将深入讲解联调、部署等场景。
|
7月前
|
自然语言处理 Java 程序员
安装ES、Kibana、IK
本文介绍如何通过Docker部署单节点Elasticsearch与Kibana,并安装IK分词器。包括创建网络、加载镜像、运行容器、配置扩展词典与停用词典,以及解决常见启动报错问题,助力快速搭建中文分词测试环境。
|
7月前
|
关系型数据库 MySQL Java
SpringCloud工程部署启动
本教程介绍SpringCloud微服务项目搭建与部署,支持完整工程导入或从零构建。涵盖父工程、子模块创建,POM依赖管理,user-service与order-service模块开发,数据库配置及业务代码编写。通过RestTemplate实现服务间远程调用,解决跨服务数据获取问题,帮助理解微服务拆分与通信机制,为后续深入学习打下基础。
|
7月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation工具,可使用提供的百度云链接下载。通过VMware创建虚拟机,参考指定教程完成安装,默认用户名为root,密码由用户自设。确保电脑满足运行需求。(236字符)
|
7月前
|
机器人 Java API
钉钉通知
创建钉钉机器人并设置告警群,通过Webhook获取API地址。使用PostMan测试文本、@指定人及卡片消息发送。编写Java代码调用官方SDK实现消息推送,封装工具类并与Nacos配置中心集成,实现异常日志等场景下的实时告警通知,确保问题及时处理。
|
7月前
|
关系型数据库 MySQL Java
开发环境搭建
配置开发环境是高效学习的第一步。建议电脑内存16G以上,推荐32G,搭配便携显示器提升效率。下载并安装虚拟机(CentOS 7,IP:192.168.101.68)、IDEA、Maven、Git等工具,导入课程资料中的项目,配置MySQL、Nacos等服务。通过FinalShell连接虚拟机,使用Docker启动容器,IDEA中配置JDK11与Maven仓库。前端通过nginx运行,访问localhost:18080查看效果。确保各组件正常运行,为后续开发打下坚实基础。(239字)
|
7月前
|
SpringCloudAlibaba Java Nacos
SpringCloud概述
Spring Cloud应微服务需求而生,提供一站式解决方案,具备约定优于配置、组件丰富、云原生适配等特点。通过版本命名规范避免子项目冲突,结合Alibaba生态形成更完善的微服务技术栈,成为主流选择。
|
7月前
|
存储 监控 Docker
ElasticSearch集群
Elasticsearch集群通过分片与副本机制解决海量数据存储及单点故障问题。将索引拆分为多个shard分布于不同节点,提升存储与性能;通过replica实现数据高可用。利用docker-compose可快速搭建三节点集群,结合cerebro监控集群状态。支持分片路由、分布式查询与故障自动转移,保障系统稳定高效运行。(238字)

热门文章

最新文章