Spring Security 原理

spring security 的代码比较难,之前我在 ProcessOn 上做了源码导读,所以这里只说关键点

理解关键点

  1. 认证的逻辑有多个 filter 来完成,常用的 filterUsernamePasswordAuthenticationFilterRememberMeAuthenticationFilter
  2. 认证成功,就会生成 Authentication 对象,可以从 SecurityContextHolder 获取。
  3. 有两个核心配置类,HttpSecurityWebSecurity,这两个都是用来配置 springSecurityFilterChain,只不过暴露的方法不一样

关键代码

第一步执行下面方法,添加 SecurityConfigurer。

Spring Boot 启动流程

spring boot 启动流程必须懂。

启动类示例:

1
2
3
4
5
6
7
8
@SpringBootApplication
public class HiApplication {

    public static void main(String[] args) {
        // 先执行 SpringApplication 的构造方法,然后执行 run 方法
        SpringApplication.run(HiApplication.class, args);
    }
}

SpringApplication#run

源码位置: org.springframework.boot.SpringApplication#SpringApplication