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/621532/

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

(0)

大家都在看

  • AOP实现参数的判空问题

    不想每次都去判断必传的参数是否为空,写代码太繁琐了,正好最近用了AOP实现权限控制,依葫芦画瓢,现在用它实现参数的判空,至于AOP的原理之类,自己百度了解一下吧 NullDisab…

    Java 2023年6月8日
    070
  • 面向对象学习笔记

    面向对象的三大特征: 封装、继承、多态 封装:调用方法而不需要了解方法内部是如何实现的,为什么要这样呢,因为有些方法可能有些标准规范,如果你自己去调用使用的话可能就没有遵守他的规定…

    Java 2023年6月6日
    084
  • 包装类Integer的equal方法与“==”运算符 比较

    包装类Integer的equal方法与”==”运算符 比较 一、在讲述之前先扔出一段代码看看 public static void main(String[…

    Java 2023年6月5日
    075
  • 谈谈线程安全

    谈谈线程安全 线程安全问题是由于多个线程同时执行写操作引起的,例如多个线程同时对一个变量进行+1操作,伪代码如下。 int count = 1; Function A(){ cou…

    Java 2023年6月5日
    072
  • 组合模式之对购物网站

    1、 实例概况 用组合模式对购物网站的商品进管理,绘制选择模式的结构图,并绘制该案例的类图,并编写代码演示结果,运行结果样例显示如右图所示。 2、所用模式结构视图 3、实例类图 4…

    Java 2023年6月13日
    088
  • 毕业就在小公司躺了3年,面试大厂发现,发现不会分布式没人要…

    之前写了一篇秒杀系统的文章,最后给自己埋了分布式事务的坑,然后很多读者就要求我去写分布式事务,那作为程序员届的暖男,我一向是有求必应的,就算是不睡觉我都要写给你们看的! 因为分布式…

    Java 2023年6月9日
    095
  • Nginx

    一、简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sy…

    Java 2023年5月30日
    054
  • IDEA导入maven项目后,右侧没有maven栏,build失败

    先在view的tools windows里看看有没有maven没有的话 在help里搜功能add maven project 看能不能成功 不能的话如果原因是[FATAL_ERRO…

    Java 2023年6月5日
    087
  • springboot读取配置文件中的集合对象

    配置文件如下: food-category.properties 不难看出,配置文件中是多个对象集合,我们只有要建立对应的类进行读取即可。 1.创建对应的实体类,建立映射并读取配置…

    Java 2023年5月30日
    070
  • logback日志级别动态切换的终极方案(Java ASM使用)

    背景 一切皆有因果,所有事情,都有事件驱动。本方案的日志级别切换是由这样的背景下产生的: 单个生产环境上,有几百近千个微服务 日志级别切换不重启服务,要求即时生效果 由业务开发人员…

    Java 2023年6月6日
    082
  • LEDE 虚拟机安装

    虽然我对路由器没什么兴趣,但是紧跟潮流还是有必要的,现在因为网络闭关锁国政策,很多人都想自己搭配一台私人的服务器,不想被商业公司左右数据安全。我感觉这个是一个商机,建议大家可以朝这…

    Java 2023年5月30日
    085
  • 阿里云-快速搭建Spring Boot环境(Java,IntelliJ IDEA)

    本步骤主要介绍使用Spring Assistant插件来搭建简单的Spring Boot项目。 在IntelliJ IDEA启动界面,单击 Create New Project。 …

    Java 2023年5月29日
    071
  • springBoot踩坑记录——持续更新ing

    以下都是springboot的默认配置,如果修改过springboot的配置文件则有可能不起作用。 springboot的resources下的目录作用 resources/tem…

    Java 2023年6月5日
    092
  • 注册功能分析以及表单校验

    注册功能分析 表单校验 表单校验: 1、用户名:单词字符,长度8到20位 2、密码:单词字符,长度8到20位 3、email:邮件格式 4、姓名:非空 5、手机号:手机号格式 6、…

    Java 2023年6月6日
    084
  • Macbook中VMWare的Centos7虚拟机配置静态IP并允许上网的配置方法

    一、检查Macbook本身的配置 1、打开【系统偏好设置】-【网络】- 选中【Wi-Fi】项(如果您是WIFI上网请选择此项)- 点右侧【高级】 选择【TCP/IP】选项卡,记录好…

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