Spring Security登录的流程

Spring Security登录的流程

Spring Security登录的流程

1、UsernamePasswordAuthenticationFilter这过滤器开始

attemptAuthentication方法

Spring Security登录的流程

请求的request中的参数

Spring Security登录的流程

setDetails(request, authRequest); 是在设置一些seesion的信息

Spring Security登录的流程

然后进入这个 return this.getAuthenticationManager().authenticate(authRequest);

2、ProviderManager进入这个方法进程验证

authenticate方法

Spring Security登录的流程

第一次进入因为paoviders的参数不符合,从新再次进入

Spring Security登录的流程

Spring Security登录的流程

第二进入的时的参数信息

Spring Security登录的流程

result = provider.authenticate(authentication);进入

3、AbstractUserDetailsAuthenticationProvider对象

authenticate方法

Spring Security登录的流程

通过用户名和封装好的对象去查找user(UserDetails)这个对象
user = retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);

4、DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider

retrieveUser方法

Spring Security登录的流程
UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username);

通过自己写的service层并且实现了 UserDetailsService接口的方法中去数据库查询该用户

Spring Security登录的流程

这里过后就获取到了这个查询的user的信息

Spring Security登录的流程

然后进入

additionalAuthenticationChecks(user, (UsernamePasswordAuthenticationToken) authentication);

这个方法进行密码的校验检查

additionalAuthenticationChecks方法

Spring Security登录的流程

Spring Security登录的流程

ProviderManager 一直到这个里面的 authenticate 方法结束,这中间把密码都移除了,估计未来保证安全

最后的这个返回的 result (第二个进入的返回)

Spring Security登录的流程

然后接着就是第一次进入的返回了

5、AbstractAuthenticationProcessingFilter

Spring Security登录的流程

后面就该执行以下登录成功后的处理了,比如权限认证

还有其他过滤器的执行了

Original: https://www.cnblogs.com/shuisanya/p/16603115.html
Author: 水三丫
Title: Spring Security登录的流程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581460/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • LVS+KeepAlived高可用部署架构

    1 构建高可用集群 1.1 什么是高可用集群 高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的得服务器集群技…

    Linux 2023年6月13日
    089
  • Docker基础知识

    Docker 是什么 Docker 经常被提起的特点: Docker 技术的基础: Docker 组件: Docker 安装 Docker 常见命令 容器相关操作 获取容器相关信息…

    Linux 2023年6月7日
    0115
  • Guava中这些Map的骚操作,让我的代码量减少了50%

    Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码,使代码更为优雅,另…

    Linux 2023年6月7日
    0120
  • Teleport&Suspense

    vue3 新添加了一个默认的组件就叫 Teleport,我们可以拿过来直接使用,它上面有一个 to 的属性,它接受一个css query selector 作为参数,这就是代表要把…

    Linux 2023年6月13日
    0118
  • Identity Server 4资源拥有者密码认证控制访问API(二)

    基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一、 Quick…

    Linux 2023年6月13日
    0115
  • Redis分布式锁的使用与实现原理

    模拟一个电商里面下单减库存的场景。1.首先在redis里加入商品库存数量。 2.新建一个Spring Boot项目,在pom里面引入相关的依赖。 <dependency&gt…

    Linux 2023年5月28日
    0119
  • Java 的JAR包、EAR包、WAR包区别

    WAR(Web Archive file) 网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。WAR专用于Web方面。大部分的JAVA WEB工程,都是…

    Linux 2023年6月14日
    0111
  • 【Linux】【虚拟机】 IP地址的动态与静态设置

    配置文件的修改 配置文件的修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33 IP配置方式(不指定:none,静态:static,动…

    Linux 2023年6月14日
    0119
  • 学习一下 SpringCloud (二)– 服务注册中心 Eureka、Zookeeper、Consul、Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月11日
    0117
  • Linux之Keepalived高可用

    一、高可用介绍 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。 硬件通常使用:F5 软件通常使用:Ke…

    Linux 2023年5月27日
    0117
  • 实用!这17个运维技巧,收藏起来随时备用~

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0112
  • 系统执行命令记录到message 日志文件中

    直接 配置 /etc/profile 配置文件添加一样,简单高定。 export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; e…

    Linux 2023年6月8日
    086
  • brew install mongodb

    install 安装请参考:https://blog.csdn.net/chanstic/article/details/104371316 //&#x542F;&…

    Linux 2023年6月6日
    0138
  • [转]最值得拥有的免费Bootstrap后台管理模板

    Original: https://www.cnblogs.com/haowuji/p/7490519.htmlAuthor: 下-个路口Title: [转]最值得拥有的免费Boo…

    Linux 2023年6月13日
    0112
  • 【学习笔记】week01

    1、按系列罗列Linux 的发行版,并描述不同发行版之间的联系与区别 (1) Slackware : l SUSE Linux 软件包齐全 (2) Debian : l ubunt…

    Linux 2023年5月27日
    083
  • 初识pytest

    现在这份工作一直做硬件和算法方面,但本人还是很喜欢玩web,所以自学分享一下。 如何安装pytest 其实很简单 pip install pytest pip install -U…

    Linux 2023年6月8日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球