SpringSecurity之UsernamePasswordAuthenticationFilter过滤器执行流程

Spring Security源码解析一:UsernamePasswordAuthenticationFilter之登录流程 Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 一.前言 spring security安全框架作为spring系列组件中的一个,被广泛的运用在各项目中,那么spring security在程序中的工作流程是个什么样的呢,它是如何进行一系列的鉴权和认证呢,下面让我们走进源码,从源码的角度来从头走一遍spr 阅读详情

过滤器:UsernamePasswordAuthenticationFilter继承 AbstractAuthenticationProcessingFilter(抽象类)  

public class UsernamePasswordAuthenticationFilter extends

AbstractAuthenticationProcessingFilter {

}

核心方法,返回Authentication接口,里面有getAuthorities,getCredentials,getDetails,getPrincipal,isAuthenticated,setAuthenticated等方法

先执行attemptAuthentication方法。这个方法会从request中读出用户名、密码,组成UsernamePasswordAuthenticationToken对象,调用父类this.getAuthenticationManager().authenticate(authRequest)方法返回Authentication对象,UsernamePasswordAuthenticationToken是实现了Authentication。然后将Authentication对象传给AuthenticationManager进行登录认证。AuthenticationManager的认证过程是springsecurity认证的核心。大致记录下。

​

AuthenticationManager(接口)实际是ProviderManager(类),ProviderManager实现了AuthenticationManager接口。将认证的工作交给AuthenticationProvider(多个),AuthenticationManager都会包含多个AuthenticationProvider对象,有任何一个AuthenticationProvider验证通过,都属于认证通过。AuthenticationManager和AuthenticationProvider在哪里来的呢?在spring-security.xml的配置中来的

authenticate(authRequest)实现类ProviderManager

ProviderManager类核心方法循环遍历所有provider,有一个成功即认为通过

provider.authenticate(authentication)接口  AuthenticationProvider

实现类public abstract class AbstractUserDetailsAuthenticationProvider implements

AuthenticationProvider, InitializingBean, MessageSourceAware {}

UserDetails retrieveUser(String username,

UsernamePasswordAuthenticationToken authentication) 这个抽象方法实现类

核心方法

我们可以自定义userService 去重写loadByUsername(String username)方法

如果要自定义登录认证,如第三方登录后,用springsecurity接管,就需要增加类似于UsernamePasswordAuthenticationFilter的过滤器

Spring Security详解(一)认证之核心组件和服务 文章目录什么是Spring Security验证?1.核心组件1.1 SecurityContextHolder1.2 Authentication1.3 UserDetails 和 UserDetailsService1.4 UserDetailsService1.5 AuthenticationManager1.6 AuthenticationProvider1.7 总结 什么是Spring Security验证? 让我们考虑一个大家都很熟悉的标准的验证场景。 提示用户输入用户名和密码进行登录。 该 阅读详情

相关推荐

【第三篇】SpringSecurity请求流程分析

本篇文章主要分析一下SpringSecurity在系统启动的时候做了那些事情、第一次请求执行的流程是什么、以及SpringSecurity的认证流程是怎么样的,主要的过滤器有哪些?

筱白爱学习!的博客 1319

UsernamePasswordAuthenticationFilter

我们前面介绍的账户密码都是指定在我们的xml配置文件中,我们最终还是需要实现和数据库中的数据比较,那么我们就需要自定义认证逻辑的实现。 我们还是一样先进行源码分析,系统认证是通过UsernamePasswordAuthenticationFilter过滤器实现的。 表单提交参数 public class UsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter { //...

m0_57560984的博客 4879

vue的重点4:vue下按下回车键触发事件

vue下按下回车键触发事件 方法1: <div id="app"> <input type="text" @keyup.enter="touch"> </div> 方法2: <div id="app"> <input type="text" @keyup.13="touch"> </div> 方法3: <div id="app"> <!-- 自定义按键修饰符 -->

小黄呀呀呀的博客 3522

Spring Security入门6:Spring Security的默认配置

Spring Security 是一个强大且灵活的身份验证和授权框架,用于保护 Java Web 应用程序中的资源,它提供了一套丰富的功能,用于处理身份验证、授权、密码编码和会话管理等安全相关的任务。

Designer 小郑的技术博客 2522

SpringSecurity6 | 核心过滤器

大家好,我是Leo哥🫣🫣🫣,上一节我们通过源码剖析以及图文分析,了解了关于委派筛选器代理和过滤器链代理的原理和作用。这节课我们接着学习SpringSecurity的过滤器,了解SpringSecurity中都有哪些核心过滤器。好了,话不多说让我们开始吧😎😎😎。以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。

分享思想,留下痕迹。 1万+

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

SpringSecurity认证流程浅析(源码层面)

对SpringSecurity源码的理解对使用SpringSecurity可以说是非常重要,这篇博客就根据其源码,浅析一下其认证流程,对于自己实现一些功能会很有帮助。 为了方便理解,先放一张流程图 可以看到程序运行到核心过滤器AbstractAuthenticationProcessingFilter 抽象类的时候调用.doFilter()方法,一下是源码。 public void doFilt...

whason的博客 316

ArcGIS供地图斑图形及属性入库操作(附练习数据)

已知数据: 供地图斑位置图。 供地图斑表格 成果要求:将供地图斑导入mdb数据库并将供地图斑表格的属性进行挂接。 接下来我们开始操作: 1、 打开arcmap,在目录内连接的文件夹内找到供地图斑位置图。图片 2、 将annotation和polygon添加到arcmap图片 3、 右击文件所在文件夹新建mdb数据库图片 4、 右击数据库新建要素数据集。(要素数据集非常重要,稍后所有操作都在数据集内进行)选择图斑投影方式及代号。图片 5、 右击要素数据集—导入(将图层内的数据导入数据库)图片 6、 数据导入.

qq_43173805的博客 8132

Security 原理分析

Security 原理分析 SpringSecurity 过滤器链 SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤器链的各个进行说明: WebAsyncManagerIntegrationFilter:将 Security 上下文与 Spring Web 中用于处理异步请求映射的 WebAsyncManager 进行集成。 SecurityContextPersistenceFilter:在每次请求处理之前将该请求相关的安全上下文信息加载到 Security

xzy的博客 675

“傻瓜”stata入门——熟悉操作界面

小白开始学习stata和matlab,零基础上手

nnpersistent的博客 4457

OpenClaw记忆插件升级实战:从memory-lancedb-pro安装到AgentSkill封装

向量数据库作为现代AI应用的核心基础设施,通过将非结构化数据转换为高维向量并利用相似度检索实现语义理解。其原理基于嵌入模型生成向量表示,结合近似最近邻搜索算法实现高效查询。这项技术为智能体系统提供了长期记忆和上下文感知能力,显著提升了对话连贯性与任务执行效率。在AI智能体开发领域,向量数据库常用于知识库构建、对话历史管理和个性化推荐等场景。本文聚焦OpenClaw框架中memory-lancedb-pro插件的部署实践,针对**插件加载顺序**和**Apache Arrow依赖**两大常见痛点,通过封装成可

weixin_42525482的博客 638

接收请求处理流程_(七)springSecurityFilterChain处理请求流程

知识回顾:1、springSecurityFilterChain是SpringSecurity框架的入口,是一个FilterChainProxy类型的bean,继承于Filter2、web框架的DelegatingFilterProxy会将调用springSecurityFilterChain的doFilter方法,将请求传递给SpringSecurity框架3、在传统web项目中Delegati...

weixin_34221374的博客 856

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1739

创新实训 9

2021SC@SDUSC 这次分析SpringSecurity部分源码 SpringSecurity 本质是一个过滤器链 查看源码: FilterSecurityInterceptor : 是一个方法级的权限过滤器,基于过滤器的最底层 public class FilterSecurityInterceptor extends AbstractSecurityInterceptor implements Filter { private static final String FILTER

Azisagawa的博客 610

基于Simulink的轨道交通信号控制系统仿真详细介绍

轨道交通信号控制系统是确保列车安全、高效运行的核心技术。通过Simulink进行信号控制系统的仿真,可以验证系统的设计、优化调度策略并提高安全性。以下是如何在MATLAB和Simulink中设计并仿真一个轨道交通信号控制系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的轨道交通信号控制系统仿真。该系统能够根据列车位置、速度和轨道状态生成控制指令,确保列车的安全、高效运行。通过虚拟场景仿真、硬件在环测试和实机测试,验证了系统的性能,并通过参数优化进一步提升了系统的可靠性。引入智能调度。

xiaoheshang_123的博客 462

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

SpringSecurity 自定义UsernamePasswordAuthenticationFilter

#UsernamePasswordAuthenticationFilter介绍 UsernamePasswordAuthenticationFilter是AbstractAuthenticationProcessingFilter针对使用用户名和密码进行身份验证而定制化的一个过滤器。其添加是在调用http.formLogin()时作用,默认的登录请求pattern为"/login",并且为POST...

荡的博客 8109

阿里云百炼全解析:一站式大模型开发平台的架构与行业实践

摘要: 阿里云百炼平台通过一站式架构革新大模型开发范式,将传统碎片化工具链整合为统一工作流,实现开发周期从月级到小时级的跃迁。其核心架构包含接入层、引擎层与资源层,关键技术突破包括MCP服务协议、多模态引擎及高性能训练优化。平台提供全生命周期开发支持,从数据准备到模型部署,并通过VPC隔离、数据加密构建企业级安全体系。已在医疗、电力等行业实现显著增效,如阿斯利康药物分析系统准确率提升至95%。未来将向多Agent协同、边缘计算等方向演进,推动AI技术深度融入产业核心。

fudaihb的博客 1990

SpringSecurity过滤器UsernamePasswordAuthenticationFilter

简介 UsernamePasswordAuthenticationFilter是AbstractAuthenticationProcessingFilter针对使用用户名和密码进行身份认证而定制化的一个过滤器。其添加是在调用http.formLogin()时作用,默认的登录请求pattern为"/login",并且为POST请求。当我们登录的时候,也就是匹配到loginProcessingUrl,这个过滤器就会委托认证管理器authenticationManager来验证登录 登陆流程入口是Abstrac

clyu的博客 6146

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringSecurity认证流程(超级详细)

最近开发项目的时候遇到了和SpringSecurity相关的一些问题,但是之前并没有去了解过SpringSecurity,导致改系统安全权限验证的时候就比较吃力了,目前项目开发大多都直接用脚手架直接开发,系统安全权限验证已经形成了,所以并不是自己写的,自己理解起来会更慢一些,所以这篇文章就是为了分析SpringSecurity的认证流程而写的。

qq_34091529的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringSecurity认证流程

SpringSecurity认证流程

msq16021的博客 5986

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringSecurity的执行流程超详细讲解

如果不是的话做放行,如果是的话做认证,并调用子类的attemptAuthentication方法去查数据库返回UserDetails,把认证成功的数据封装到这个Authentication对象中去,并且做一个session策略的设置,当认证失败,做异常抛出,掉认证失败方法。注意看这里是一个try,catch,有成功就肯定有失败,这步就是如果认证失败,则抛出异常,执行认证失败的方法。默认为false,如果认证成功,则变为true,执行后续操作。方法,得到表单数据,进行身份认证,如果认证成功,返回一个。

qq_41473691的博客 5715

SpringSecurity认证的执行流程【完整流程图在文章结尾】

在AbstractAuthenticationProcessingFilter 中定义了认证处理过程,具体如下:由上图可知,在执行过滤器的时候会对请求进行校验,如果校验通过后才会执行具体的认证逻辑。那这里校验的什么?这里先不继续说,后续会再次介绍。当校验通过后,则会执行具体具体的认证逻辑,该方法是个抽象方法,具体的实现逻辑都是在子类中实现的,也就是。

smallapprentice的博客 817

SpringSecurity自定义UsernamePasswordAuthenticationFilter

UsernamePasswordAuthenticationFilter介绍 UsernamePasswordAuthenticationFilter是AbstractAuthenticationProcessingFilter针对使用用户名和密码进行身份验证而定制化的一个过滤器。其添加是在调用http.formLogin()时作用,默认的登录请求pattern为"/login",并且...

weixin_30448603的博客 1124

SpringSecurity执行流程分析与使用

SpringSecurity核心过滤器之UsernamePasswordFilter执行流程源码分析以及boot项目集成自定义springsecurity框架。

weixin_54345825的博客 1711

SpringSecurity默认过滤器链之UsernamePasswordAuthenticationFilter

1.作用 这个Filter是通过用户名和密码进行认证(登录)的。系统默认有三种认证Filter。 ClientCredentialsTokenEndpointFilter: 基于oauth2 token的认证入口 Oauth2ClientAuthenticationProcessingFilter:oauth2 客户端用于从授权服务器获取accessToken进行认证 2.认证统一流程AbstractAuthenticationProcessingFilter public void doFilte

欢谷悠扬 2051
上一篇: Day Day Up
下一篇: linux 安装nginx到指定目录
VIP006008
博客等级 码龄5年 350粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值