Filter Kustom di Rantai Filter Keamanan Pegas

1. Ikhtisar

Dalam artikel singkat ini, kami akan fokus pada penulisan filter kustom untuk rantai filter Keamanan Musim Semi.

2. Membuat Filter

Keamanan Musim Semi menyediakan sejumlah filter secara default, dan seringkali, ini sudah cukup.

Tapi tentu saja terkadang perlu untuk mengimplementasikan fungsionalitas baru dengan membuat filter baru untuk digunakan dalam rantai.

Kami akan mulai dengan menerapkan org.springframework.web.filter.GenericFilterBean .

The GenericFilterBean adalah sederhana javax.servlet.Filter pelaksanaan implementasi yang semi sadar.

Ke implementasi - kita hanya perlu menerapkan satu metode:

public class CustomFilter extends GenericFilterBean { @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); } }

3. Menggunakan Filter di Security Config

Kami bebas memilih konfigurasi XML atau konfigurasi Java untuk menyambungkan filter ke konfigurasi Keamanan Musim Semi.

3.1. Konfigurasi Java

Anda dapat mendaftarkan filter yang menggantikan metode konfigurasi secara terprogram dari WebSecurityConfigurerAdapter . Misalnya, ini bekerja dengan metode addFilterAfter pada contoh HttpSecurity :

@Configuration public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.addFilterAfter( new CustomFilter(), BasicAuthenticationFilter.class); } } 

Ada beberapa metode yang mungkin:

  • addFilterBefore (filter, class) - menambahkan filter sebelum posisi kelas filter yang ditentukan
  • addFilterAfter (filter, class) - menambahkan filter setelah posisi kelas filter yang ditentukan
  • addFilterAt (filter, class) - menambahkan filter di lokasi kelas filter yang ditentukan
  • addFilter (filter) - menambahkan filter yang harus merupakan turunan dari atau memperluas salah satu filter yang disediakan oleh Spring Security

3.2. Konfigurasi XML

Anda dapat menambahkan filter ke rantai menggunakan tag filter khusus dan salah satu dari nama ini untuk menentukan posisi filter Anda. Misalnya, dapat ditunjukkan oleh atribut setelah :

Berikut ini semua atribut untuk menentukan secara tepat tempat filter Anda dalam tumpukan:

  • after - menjelaskan filter segera setelah filter kustom akan ditempatkan di rangkaian
  • before - mendefinisikan filter sebelum filter kami ditempatkan di rantai
  • position - memungkinkan penggantian filter standar di posisi eksplisit dengan filter kustom

4. Kesimpulan

Dalam artikel singkat ini, kami membuat filter khusus dan menghubungkannya ke rantai filter Keamanan Musim Semi.

Seperti biasa, semua contoh kode tersedia dalam contoh proyek Github.