Rumah >Java >javaTutorial >Mengapa Penapis Keselamatan Spring Saya Dikenakan Dua Kali Apabila Menggunakan @Autowired?

Mengapa Penapis Keselamatan Spring Saya Dikenakan Dua Kali Apabila Menggunakan @Autowired?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 11:56:10409semak imbas

Why is My Spring Security Filter Invoking Twice When Using @Autowired?

Doa Penapis Pendua dalam Spring Security dengan @Autowire

Apabila percubaan dibuat untuk menyuntik dependensi ke dalam penapis melalui @Autowire dalam Spring Security , ia boleh membawa kepada isu apabila penapis digunakan dua kali. Ini berlaku kerana Spring Boot mendaftarkan mana-mana kacang penapis secara automatik dengan bekas servlet.

Untuk mengelakkan seruan berganda ini, terdapat dua pilihan:

1. Elakkan Mendaftar Penapis sebagai Kacang

Ini boleh dicapai dengan tidak mendedahkan penapis sebagai kacang dan hanya mendaftarkannya dengan Spring Security. Ini memastikan Spring Boot tidak mendaftarkan penapis secara automatik dengan bekas servlet.

2. Gunakan FilterRegistrationBean

Jika kebergantungan pendawaian automatik ke dalam penapis adalah penting, maka penapis mestilah kacang. Walau bagaimanapun, Spring Boot perlu diarahkan secara jelas untuk tidak mendaftarkan penapis sebagai Penapis. Ini boleh dilakukan menggunakan FilterRegistrationBean, seperti yang ditunjukkan di bawah:

@Bean
public FilterRegistrationBean registration(MyFilter filter) {
    FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter);
    registration.setEnabled(false);
    return registration;
}

Pendekatan ini menghalang Spring Boot daripada mendaftarkan penapis dengan bekas servlet sementara masih membenarkan penapis didawai secara automatik oleh Spring Security.

Atas ialah kandungan terperinci Mengapa Penapis Keselamatan Spring Saya Dikenakan Dua Kali Apabila Menggunakan @Autowired?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn