Dalam projek Spring Boot, kami memperkenalkan pergantungan Spring Security dan tidak melakukan apa-apa apabila kami memulakan projek Spring Security akan berkuat kuasa . Permintaan akses dipintas.
Spring Boot menyediakan penyelesaian konfigurasi automatik untuk Spring Security, yang membolehkan anda menggunakan Spring Security dengan kurang konfigurasi.
Jadi bagaimana rantai penapis ini memuatkan dan melaksanakan pemintasan?
Apabila projek Spring Boot dimulakan, kelas SecurityFilterAutoConfiguration
akan dimuatkanDaftar penapis dengan nama DelegatingFilterProxyRegistrationBean
. springSecurityFilterChain
Nota: nama springSecurityFilterChain adalah berkod keras.
Selepas pendaftaran berjaya, penapis dimuatkan ke dalam pendaftar. Kemudian panggil kaedah getFilter() untuk menjana DelegatingFilterProxyRegistrationBean
objek proksi dan daftarkannya dalam DelegatingFilterProxy
. IOC
kelas DelegatingFilterProxy
. doFilter
Kelas DelegatingFilterProxy pada asasnya ialah Penapis, yang secara tidak langsung melaksanakan antara muka Penapis, tetapi dalam doFilter, ia sebenarnya memanggil kelas pelaksanaan Penapis proksi yang diperoleh daripada bekas Spring. Objekdikembalikan oleh
. FilterChainProxy
mendapat penapis DelegatingFilterProxy
melalui nama springSecurityFilterChain
dan kaedah FilterChainProxy
penapis ini akhirnya dilaksanakan. doFilter
Sahkan bahawa kata nama springSecurityFilterChain tidak boleh diubah suai Lihat kaedah initDelegate.
pada asasnya ialah Penapis, jadi lihat kaedah FilterChainProxy
. Beri perhatian kepada sifat-sifat dalam kelas ini. 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;
kelas ialah antara muka dan hanya terdapat satu kelas pelaksanaan SecurityFilterChain
kelas. Pembina kelas DefaultSecurityFilterChain
memulakan penapis Senarai, yang dimasukkan dengan menghantar parameter. DefaultSecurityFilterChain
yang diserahkan kepada Spring Security
untuk konfigurasi automatik dan dicipta serta disuntik oleh kelas Spring boot
. SpringBootWebSecurityConfiguration
. WebSecurityConfigurerAdapter
Gunakan OrderedFilter untuk proksi dan tetapkan atribut pesanan.
Selepas penambahan selesai, masukkan penapis ini ke dalam objek DefaultSecurityFilterChain.
Akhir sekali, springSecurityFilterChain dimuatkan melalui konfigurasi WebSecurityConfiguration Atribut securityFilterChains dikekalkan dalam WebSecurityConfiguration, yang menyimpan semua penapis dalam rantaian penapis.
Atas ialah kandungan terperinci Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!