Rumah  >  Artikel  >  Java  >  Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

王林
王林ke hadapan
2023-05-11 22:55:041023semak imbas

    1. Pengenalan

    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?

    2. Pemuatan rantai penapis Spring Security

    1.2 Daftarkan penapis bernama springSecurityFilterChain

    Apabila projek Spring Boot dimulakan, kelas SecurityFilterAutoConfiguration akan dimuatkanDaftar penapis dengan nama DelegatingFilterProxyRegistrationBean. springSecurityFilterChain

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    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

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    3 Lihat kelas DelegatingFilterProxy

    Apabila kami mengakses projek, kami akan memasuki kaedah

    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. Objek

    dikembalikan oleh

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    . FilterChainProxy

    Daripada ini kita dapat melihat bahawa kelas

    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.

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    4 Lihat kelas FilterChainProxy Kelas

    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;

    4.1 Lihat kaedah doFilterInternal

    Adakah anda terkejut? Kesemua 15 penapis ada di sini!

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    4.2 Lihat kaedah getFilters

    Ternyata penapis ini dikapsulkan ke dalam objek SecurityFilterChain.

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    5 Lihat antara muka SecurityFilterChain

    kelas ialah antara muka dan hanya terdapat satu kelas pelaksanaan SecurityFilterChain kelas. Pembina kelas DefaultSecurityFilterChain
    memulakan penapis Senarai, yang dimasukkan dengan menghantar parameter. DefaultSecurityFilterChain

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    Bilakah parameter rantai penapis diluluskan?

    6. Lihat kelas SpringBootWebSecurityConfiguration

    mencipta rantai penapis

    yang diserahkan kepada Spring Security untuk konfigurasi automatik dan dicipta serta disuntik oleh kelas Spring boot. SpringBootWebSecurityConfiguration

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    Lihat kelas

    . WebSecurityConfigurerAdapter

    Apakah proses pelaksanaan SpringBoot menyepadukan pemuatan rantai penapis Spring Security?

    Kemudian objek HttpSecurity akan disuntik HttpSecurity boleh difahami sebagai konfigurasi teras http bagi Spring Security, yang menyimpan rantaian penapis, laluan padanan permintaan dan pengesahan lain yang berkaitan. maklumat kebenaran dalam kaedah Spring Security.

    Kemudian kami mula mencipta rantaian penapis Spring Security, yang telah dikonfigurasikan secara automatik oleh Spring Boot. Terdapat 15 penapis secara keseluruhan.

    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!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam