常用过滤器介绍

简介: 本文介绍了Spring Security中的核心过滤器链,共15个关键过滤器,如SecurityContextPersistenceFilter、CsrfFilter、UsernamePasswordAuthenticationFilter等,详解其作用与执行顺序,揭示AOP思想在安全控制中的应用。实际加载的过滤器会根据配置动态调整,并非一成不变。

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

相关文章
|
25天前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色授权,实现简单但管理复杂;RBAC基于角色分配权限,支持角色继承与职责分离,更适用于复杂系统。还简要提及DAC、MAC、ABAC等模型,并详解RBAC0-3的演进与核心原则,帮助构建权限体系的全局认知。(238字)
|
25天前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍了敏捷开发中工时评估的关键方法,重点讲解“人日”概念及开发、自测、联调、测试、发布各阶段的参考周期。结合常见需求如增删改查、Excel导入导出、远程调用等,提供实用的人日估算标准,并附详细拆分模板,助力团队科学排期。
需求开发人日评估
|
25天前
|
Java Shell 测试技术
Jmeter快速入门
本教程介绍JMeter的安装与快速入门。首先需安装JDK并配置环境变量,再下载解压JMeter,通过bin目录下的脚本启动。可设置中文界面并创建线程组、HTTP取样器及监听器,进行简单性能测试,掌握基本使用流程。
|
25天前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强工具,简化单表CRUD操作,通过继承BaseMapper即可实现增删改查。支持条件构造器、分页插件、代码生成等功能,提升开发效率,广泛应用于企业级项目中。
 持久层框架MyBatisPlus
|
25天前
|
存储 运维 Java
微服务概述
本文对比单体与微服务架构,解析微服务定义、优缺点及技术实现。微服务通过拆分业务、独立部署、轻量通信提升系统扩展性与维护性,虽带来运维与分布式事务挑战,但仍是现代应用架构演进方向。
 微服务概述
|
25天前
|
SpringCloudAlibaba Java Nacos
SpringCloud概述
Spring Cloud是Spring推出的微服务一站式解决方案,具备约定大于配置、组件丰富、开箱即用等特点。通过整合Netflix与Alibaba生态,提供完整微服务架构支持,其中Spring Cloud Alibaba因Nacos、Sentinel等优秀组件成为主流选择。
 SpringCloud概述
|
25天前
|
存储 Dubbo API
SpringCloud工程部署启
本文介绍SpringCloud微服务工程的搭建与部署,涵盖项目创建、数据库配置、服务启动及远程调用实现,通过RestTemplate完成服务间通信,帮助理解微服务拆分与协作机制。
SpringCloud工程部署启
|
25天前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队中多环境自动化部署实践,涵盖dev、test、pre、prod环境的职责划分,基于Jenkins+K8S的CI/CD平台实现一键发布,并结合Skywalking实现日志链路追踪与快速排错,提升发布效率与系统稳定性。
|
25天前
|
负载均衡 算法 架构师
Ribbon负载均衡
本文深入讲解Spring Cloud中Ribbon实现客户端负载均衡的原理,涵盖负载均衡概念、分类、常用算法,详解@LoadBalanced注解作用机制,演示自定义策略与饥饿加载优化,并对比服务端负载均衡,帮助读者全面理解微服务间调用的流量分发技术。
|
25天前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、整合注册中心、服务分级模型、负载均衡策略、权重控制、环境隔离及实例类型,涵盖从入门到实战的核心知识点,助力掌握微服务架构中的服务发现与配置管理。
 Nacos注册中心

热门文章

最新文章