Penapis Tersuai di Rantai Penapis Keselamatan Musim Semi

1. Gambaran keseluruhan

Dalam artikel ringkas ini, kita akan fokus menulis penapis khas untuk rantai penapis Keselamatan Musim Semi.

2. Membuat Penapis

Spring Security menyediakan sebilangan penapis secara lalai, dan selalunya, ini sudah mencukupi.

Tetapi tentu sekali kadang-kadang perlu melaksanakan fungsi baru dengan membuat penapis baru untuk digunakan dalam rantai.

Kita akan mulakan dengan melaksanakan org.springframework.web.filter.GenericFilterBean .

The GenericFilterBean adalah mudah javax.servlet.Filter pelaksanaan perlaksanaan yang Spring sedar.

Menjelang pelaksanaan - kita hanya perlu menerapkan satu kaedah:

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

3. Menggunakan Penapis dalam Security Config

Kami bebas memilih konfigurasi XML atau konfigurasi Java untuk memasukkan penapis ke konfigurasi Spring Security.

3.1. Konfigurasi Java

Anda boleh mendaftarkan penapis secara teratur mengatasi kaedah konfigurasi dari WebSecurityConfigurerAdapter . Sebagai contoh, ia berfungsi dengan kaedah addFilterAfter pada contoh HttpSecurity :

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

Terdapat beberapa kaedah yang mungkin:

  • addFilterBefore (filter, class) - menambah filter sebelum kedudukan kelas filter yang ditentukan
  • addFilterAfter (filter, class) - menambah filter selepas kedudukan kelas filter yang ditentukan
  • addFilterAt (filter, class) - menambah filter di lokasi kelas filter yang ditentukan
  • addFilter (filter) - menambahkan filter yang mesti menjadi contoh atau memperluas salah satu filter yang disediakan oleh Spring Security

3.2. Konfigurasi XML

Anda boleh menambahkan penapis ke rantai menggunakan tag penapis khas dan salah satu nama ini untuk menentukan kedudukan penapis anda. Misalnya, dapat ditunjukkan oleh atribut after :

Berikut adalah semua atribut untuk menentukan dengan tepat tempat penapis anda dalam timbunan:

  • selepas - menerangkan penapis dengan segera selepas itu penapis khas akan diletakkan di rantai
  • sebelum - mentakrifkan penapis sebelum penapis kita harus diletakkan di rantai
  • kedudukan - membolehkan penggantian penapis standard dalam kedudukan eksplisit dengan penapis tersuai

4. Kesimpulan

Dalam artikel ringkas ini, kami membuat penapis tersuai dan memasukkannya ke rantai penapis Spring Security.

Seperti biasa, semua contoh kod terdapat dalam contoh projek Github.