>Java >java지도 시간 >Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

王林
王林앞으로
2023-05-11 22:55:041123검색

    1. 소개

    Spring Boot 프로젝트에서는 Spring Security 종속성을 도입하고 프로젝트가 시작되면 Spring Security가 적용되고 액세스 요청이 차단됩니다.

    Spring Boot는 Spring Security를 ​​위한 자동화된 구성 솔루션을 제공하므로 더 적은 구성으로 Spring Security를 ​​사용할 수 있습니다.

    그렇다면 이 필터 체인은 어떻게 차단을 로드하고 구현합니까?

    2. Spring Security 필터 체인 로드

    1.2 springSecurityFilterChain

    Spring Boot 프로젝트가 시작되면 SecurityFilterAutoConfiguration 클래스가 DelegatingFilterProxyRegistrationBean 등록을 로드합니다. springSecurityFilterChain이라는 필터입니다. SecurityFilterAutoConfiguration类会加载 DelegatingFilterProxyRegistrationBean注册过滤器,名字为 springSecurityFilterChain

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    注意:springSecurityFilterChain名字是固定写死的。

    DelegatingFilterProxyRegistrationBean 注册成功后,该过滤器就被加载了到了注册器中。然后调用getFilter()方法生成 DelegatingFilterProxy代理对象并注册到 IOC中 。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    3、查看 DelegatingFilterProxy类

    我们访问项目,就会进入 DelegatingFilterProxy类的 doFilter方法。

    DelegatingFilterProxy类本质也是一个 Filter,其间接实现了 Filter接口,但是在 doFilter中其实调用的从 Spring 容器中获取到的代理 Filter的实现类。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    返回的 FilterChainProxy对象。

    由此可知,DelegatingFilterProxy类通过 springSecurityFilterChain这个名称,得到了一个 FilterChainProxy过滤器,最终执行的是这个过滤器的 doFilter方法。

    验证 springSecurityFilterChain名词不能修改
    查看 initDelegate方法。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    4.查看 FilterChainProxy类

    FilterChainProxy类本质也是一个 Filter,所以查看 doFilter方法。留意该类里面的属性。

    public class FilterChainProxy extends GenericFilterBean {
        private static final Log logger = LogFactory.getLog(FilterChainProxy.class);
        private static final String FILTER_APPLIED =
                FilterChainProxy.class.getName().concat(".APPLIED");
        // 过滤器链
        private List<SecurityFilterChain> filterChains;
        private FilterChainProxy.FilterChainValidator filterChainValidator;
        private HttpFirewall firewall;

    4.1 查看 doFilterInternal方法

    惊不惊喜?15个过滤器都在这里了!

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    4.2 查看 getFilters方法

    原来这些过滤器都被封装进 SecurityFilterChain对象中。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    5 查看 SecurityFilterChain接口

    SecurityFilterChain类是个接口,实现类也只有一个 DefaultSecurityFilterChain类。
    DefaultSecurityFilterChain类的构造方法,初始化了 List filters,是通过传参放进去的。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    过滤器链参数是什么时候传入的?

    6. 查看 SpringBootWebSecurityConfiguration类

    创建 Spring Security 过滤器链是交给 Spring boot 自动配置,由 SpringBootWebSecurityConfiguration类创建注入。

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?

    查看 WebSecurityConfigurerAdapter

    Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까

    Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?참고: springSecurityFilterChain의 이름은 고정되어 있습니다.

    DelegatingFilterProxyRegistrationBean 등록이 성공적으로 완료되면 필터가 레지스터에 로드됩니다. 그런 다음 getFilter() 메서드를 호출하여 DelegatingFilterProxy 프록시 객체를 생성하고 이를 IOC에 등록합니다.

    Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까

    3. DelegatingFilterProxy 클래스 보기

    🎜프로젝트에 액세스하면 DelegatingFilterProxy 클래스의 doFilter 메서드를 입력합니다. 🎜
    🎜DelegatingFilterProxy 클래스는 본질적으로 Filter 인터페이스를 간접적으로 구현하는 Filter이지만 doFilter에서는 실제로 Spring 컨테이너에서 얻은 프록시 Filter 구현 클래스를 호출합니다. 🎜
    🎜Spring Security 필터를 통합한 Spring Boot의 실행 프로세스는 무엇입니까? 체인 로딩 🎜🎜FilterChainProxy 개체가 반환되었습니다. 🎜🎜DelegatingFilterProxy 클래스가 springSecurityFilterChain이라는 이름을 통해 FilterChainProxy 필터를 획득하고 이 필터의 최종 실행은 doFilter메서드. 🎜🎜springSecurityFilterChain 명사가 수정될 수 없는지 확인하세요🎜initDelegate 메소드를 확인하세요. 🎜🎜Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까🎜 🎜4. FilterChainProxy 클래스를 확인하세요🎜🎜 FilterChainProxy 클래스는 기본적으로 필터이므로 doFilter 메서드를 확인하세요. 이 클래스의 속성에 주의하세요. 🎜rrreee🎜4.1 doFilter 내부 메소드 보기🎜🎜놀랐나요? 15개의 필터가 모두 여기에 있습니다! 🎜🎜Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까🎜 🎜4.2 getFilters 메소드 보기🎜🎜이러한 필터는 SecurityFilterChain 개체에 캡슐화되어 있는 것으로 나타났습니다. 🎜🎜Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까🎜 🎜5 SecurityFilterChain 인터페이스 보기🎜🎜SecurityFilterChain 클래스는 인터페이스이며 구현 클래스에는 DefaultSecurityFilterChain 클래스가 하나만 있습니다. 🎜DefaultSecurityFilterChain 클래스의 생성자는 매개변수를 전달하여 입력되는 목록 필터를 초기화합니다. 🎜🎜Spring Security 필터 체인 로딩을 통합한 Spring Boot의 실행 프로세스는 무엇입니까🎜 🎜필터 체인 매개변수는 언제 전달되나요? 🎜🎜6. SpringBootWebSecurityConfiguration 클래스 보기🎜🎜Spring Security 생성 필터 체인은 자동 구성을 위해 Spring boot로 전달되고 SpringBootWebSecurityConfiguration에 의해 생성 및 주입됩니다. 클래스. 🎜🎜Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까 🎜 🎜 WebSecurityConfigurerAdapter 클래스를 확인하세요. 🎜🎜🎜🎜🎜그런 다음 HttpSecurity 개체가 주입됩니다. HttpSecurity는 Spring Security의 인증 및 권한 부여와 관련된 필터 체인, 요청 일치 경로 및 기타 중요한 방법을 저장하는 Spring Security의 http 핵심 구성으로 이해할 수 있습니다. 🎜🎜그런 다음 Spring Boot에 의해 자동으로 구성되는 Spring Security 필터 체인을 만들기 시작했습니다. 총 15개의 필터가 있습니다. 🎜프록시로 OrderedFilter를 사용하고 order 속성을 설정하세요. 🎜추가가 완료된 후 이러한 필터를 DefaultSecurityFilterChain 개체로 캡슐화합니다. 🎜

    마지막으로 WebSecurityConfiguration 구성을 통해 springSecurityFilterChain을 로드합니다. securityFilterChains 속성은 WebSecurityConfiguration에서 유지되며 모든 필터를 필터 체인에 저장합니다.

    위 내용은 Spring Security 필터 체인 로딩을 통합한 SpringBoot의 실행 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제