봄 보안 버전 : 5.0.5.RELEASE
1,入口类: org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration
关键 方法 : org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration # setFilterChainProxySecurityConfigurer
응용 프로그램이 시작될 때 여기에 입력 한 것, 브레이크 포인트는 세 org.springframework.security.config.annotation.SecurityConfigurer 사용자 정의 구성을 볼 수 있습니다;
다음 코드는, 할당 WebSecurity을 구성합니다
(SecurityConfigurer <필터 WebSecurity> webSecurityConfigurer : webSecurityConfigurers)가 { webSecurity.apply (webSecurityConfigurer); }
또 다른 입력 방법, org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration # springSecurityFilterChain는,
여기에서 우리는, 빌드 WebSecurity를 볼 수 있습니다
1 공용 필터 springSecurityFilterChain ()는 슬로우 예외 { 2 부울 hasConfigurers 용의 webSecurityConfigurers =! = null의 3 &&를! webSecurityConfigurers.isEmpty (); (4) 만약 (! hasConfigurers) { 5 WebSecurityConfigurerAdapter 어댑터 = objectObjectPostProcessor 6 .postProcess ( 새로운 WebSecurityConfigurerAdapter () { 7 }); 8 webSecurity.apply (어댑터); 9 } 10 반환webSecurity.build (); 11 }
webSecurity.build는 (), org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder # doBuild를 입력하십시오;
1 보호 최종 O의 doBuild ()는 슬로우 예외 { 2 동기화 (하는 configurer) { 3 buildState = BuildState.INITIALIZING 단계; 4 5 beforeInit (); 6 초기화 (); 7 8 buildState = BuildState.CONFIGURING; 9 10 beforeConfigure (); 11 구성 (); 12 13 buildState = BuildState.BUILDING; 14 15 O 결과 = performBuild (); (16) 17 buildState = BuildState.BUILT; 18 19 복귀 결과; 20 } 21 }
doBuild 방법은 세 SecurityConfigurer에게 구성된 응용 프로그램을 처리하는 데 사용된다.
참조 : https://www.jianshu.com/p/0c54788c94f3