pig4cloud启动流程

环境

SpringBoot版本:2.7.16

SpringSecurity版本:5.7.11

pig4cloud版本:3.7.1-JDK8

流程图

概述

pig4cloud是对SpringSecurity的实现,其工作原理脱离不了SpringSecurity;pig4cloud启动首先SecurityAutoConfiguration中,加载SpringBootWebSecurityConfiguration配置、然后在SpringBootWebSecurityConfiguration检查是否添加了自定义配置,如果有执行自定义配置,添加SecurityFilterChainBuilder准备构建SecurityFilterChain;然后将其按照规则构建成对应的SecurityFilterChain交给FilterChainProxy代理。

一、SecurityAutoConfiguration配置类

在这个配置类中可以看到导入了SpringBootWebSecurityConfiguration配置类

二、SecurityFilterAutoConfiguration

是通过AutoConfiguration注解加载,加载在SecurityAutoConfiguration之后;主要是注册DelegatingFilterProxy;

三、SpringBootWebSecurityConfiguration配置类

进入这个配置类可以看到里面有三个内部类SecurityFilterChainConfiguration、ErrorPageSecurityFilterConfiguration、WebSecurityEnablerConfiguration;

1、SecurityFilterChainConfiguration:添加默认的配置,如果自定义了对应的SecurityFilterChain配置的话不会执行

2、ErrorPageSecurityFilterConfiguration:配置错误页面

3、WebSecurityEnablerConfiguration:确保不会出现有了默认配置而没有添加@EnableWebSecurity的问题

四、自定义的AuthorizationServerConfiguration

从启动流程上来说这个类是什么都无所谓,最主要是接下来就会加载@Configuration配置类;在pig4cloud中在配置中添加了认证登录模式的配置;当然这个配置后边也会构建成SecurityFilterChain;

五、WebSecurityConfigurationSpringSecurity的)

然后加载WebSecurityConfiguration此配置类,从原理上看,此配置类是一个@Configuration注解加持的配置类,

然后在这个类中加载自定义的配置类,并将其通过addSecurityFilterChainBuilder做成SecurityFilterChain;

六、WebSecurityConfiguration(自定义的)

可以看到虽然名字和SpringSecurity的一样,但是注解是@EnableWebSecurity;通过这个注解就会让SpringSecurity加载这个配置,忽略默认的配置;可以看到pig4cloud在此配置中设置了自定义的登录表单、设置了自定义的Provider;

然后做了一个SecurityFilterChain去做资源放行;

然后再回到默认的WebSecurityConfiguration中进行build;具体build可以参考我之前的文章:

http://t.csdnimg.cn/buBWhicon-default.png?t=N7T8http://t.csdnimg.cn/buBWh

相关推荐

  1. android启动流程

    2024-07-20 21:44:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 21:44:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 21:44:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 21:44:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 21:44:02       55 阅读

热门阅读

  1. ccf-csp认证--仓库规划

    2024-07-20 21:44:02       16 阅读
  2. Kraken代码阅读(一)

    2024-07-20 21:44:02       15 阅读
  3. Oracle数据库 v$access

    2024-07-20 21:44:02       14 阅读
  4. ZooKeeper 部署

    2024-07-20 21:44:02       17 阅读
  5. 【Webpack】提高打包速度

    2024-07-20 21:44:02       15 阅读
  6. Python(re模块的具体使用)

    2024-07-20 21:44:02       19 阅读
  7. 2024 暑假友谊赛 2

    2024-07-20 21:44:02       19 阅读