Spring Security 常用过滤器介绍|学习笔记

简介: 快速学习 Spring Security 常用过滤器介绍

开发者学堂课程【Spring Security知识精讲与实战演示(一)Spring Security 常用过滤器介绍】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/730/detail/13031


Spring Security常用过滤器介绍

 

Spring Security 常用过滤器介绍

过滤器是一种典型的 AOP 思想,凡是 web工程都能用过滤

过滤器在 Spring Security 中的作用

image.png

在我们做完入门案例后,再也无法访问首页。如果要访问,必须先认证。以下提供了两个虚拟的用户(“user”和“admir”)

(1)如果用“user”得到的角色就是“ROLE_USER”正好是上方所需要的角色。

(2)如果用“admir”得到的则是“ROLE_ADMIR”这样的一个角色,但这个角色是不能用的。因为这里没有对“ROLE_ADMIR”实施授权操作,所以它不能访问所有资源。

因此必须用“user”,密码也是“user”

点击登录后即可访问主页

image.png

访问完首页之后,以下是对刚才案例中的过滤器的简单讲解。

1.org.springframework.security.web.context.SecurityContextPersistenceFilter(是以下所有过滤器的基础,充当一个容器的概念,否则下面的过滤器将没有存在的空间)

首当其冲的一个过滤器,作用很重要。 SecurityContextPersistenceFilter主要是使用SecurityContextPepository在session中保存或更新一个SecurityContext,并将SecurityContext给以后的过滤器使用,来为后续filter建立所需的上下文,SecurityContext中储存了当前用户的认证以及权限信息。

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

此过滤器用来集成SecurityContext到Spring导步执行机制中的WebAsyncManager。如果没有WebAsyncManagerlntegrationFilter,SecurityContext与外部容器及Spring就无法整合。

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

向请求的Header中添加相应的信息,可在http标签内部使用security:header来控制(动态标签,仅限于GSP页面)

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

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

例如有以下两个网站,用户在登陆第一个网站的时候,在同一个浏览器有打开了另一个网站,但第二个网站有 csrf相关病毒,即跨站伪造请求的病毒,该病毒可以得到当前浏览器中所有信息,其中包含所有登录信息。会造成账号被盗风险。

image.png

image.png

5.org.springframework.security.web.authentication.LogoutFilter(退出登录使用的)

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

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

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

7.org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter(Default默认;Login登录)

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

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.SecurityContextHolderwareRequestFilter

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

12.org.springframework.security.web.authentication.AnonymousAuthenticationFilter(Anonymous匿名)

当 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.FilterSecuritylnterceptor

获取所配置资源访问的授权信息,根据 SecurityContextHolder 中存储的用户信息来决定其是否有权限。决定哪些过滤器能否使用。

以上就是对过滤器的介绍,但是 1.spring security 中并不是只有这么多过滤器,随着 spring-security.xml 配置的添加,还会出现新的过滤器。

2.spring security 中也不是每次都会增加这些过滤器,随着spring-security.xml 配置的修改,有些过滤器可能会被去掉。

相关文章
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
2055 5
|
2月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
3月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
2月前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
9月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
364 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
6月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
1047 2
|
5月前
|
人工智能 安全 Java
Spring Boot 过滤器 拦截器 监听器
本文介绍了Spring Boot中的过滤器、拦截器和监听器的实现与应用。通过Filter接口和FilterRegistrationBean类,开发者可实现对请求和响应的数据过滤;使用HandlerInterceptor接口,可在控制器方法执行前后进行处理;利用各种监听器接口(如ServletRequestListener、HttpSessionListener等),可监听Web应用中的事件并作出响应。文章还提供了多个代码示例,帮助读者理解如何创建和配置这些组件,适用于构建更高效、安全和可控的Spring Boot应用程序。
647 0
|
8月前
|
Java Spring
Spring框架的学习与应用
总的来说,Spring框架是Java开发中的一把强大的工具。通过理解其核心概念,通过实践来学习和掌握,你可以充分利用Spring框架的强大功能,提高你的开发效率和代码质量。
204 20
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
1724 1
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
317 9

热门文章

最新文章