Prilagođeni filtar u proljetnom lancu sigurnosnih filtara
1. Pregled
U ovom ćemo se brzom članku usredotočiti na pisanje prilagođenog filtra za lanac filtara Spring Security.
2. Izrada filtra
Spring Security prema zadanim postavkama nudi brojne filtre, a većinu vremena to je dovoljno.
Ali naravno da je ponekad potrebno implementirati novu funkcionalnost sa stvaranjem novog filtra koji će se koristiti u lancu.
Počet ćemo s implementacijom org.springframework.web.filter.GenericFilterBean.
The GenericFilterBean je jednostavan javax.servlet.Filter implementacija implementacije koja je svjesna Proljeća.
Što se tiče implementacije - trebamo primijeniti samo jednu metodu:
javna klasa CustomFilter proširuje GenericFilterBean {@Override javna praznina doFilter (zahtjev ServletRequest, odgovor ServletResponse, lanac FilterChain) baca IOException, ServletException {chain.doFilter (zahtjev, odgovor); }}
3. Korištenje filtra u sigurnosnoj konfiguraciji
Slobodni smo odabrati XML ili Java konfiguraciju za povezivanje filtra u Spring Security konfiguraciju.
3.1. Java konfiguracija
Možete registrirati filtar programski nadjačavajući konfigurirati metoda iz WebSecurityConfigurerAdapter. Na primjer, radi s addFilterAfter metoda na a HttpSecurity primjer:
@Configuration javna klasa CustomWebSecurityConfigurerAdapter proširuje WebSecurityConfigurerAdapter {@Override zaštićena void konfiguracija (HttpSecurity http) baca izuzetak {http.addFilterAfter (novi CustomFilter (), BasicAuthenticationFilter.class); }}
Postoji nekoliko mogućih metoda:
- addFilterBefore (filter, klasa) - dodaje a filtar prije položaja navedenog filtra razred
- addFilterAfter (filtar, klasa) - dodaje a filtar nakon položaja navedenog filtra razred
- addFilterAt (filtar, klasa) - dodaje a filtar na mjestu navedenog filtra razred
- addFilter (filtar) - dodaje a filtar to mora biti instanca ili proširiti jedan od filtara koje pruža Spring Security
3.2. XML konfiguracija
Možete dodati filtar lancu pomoću prilagođeni filtar i jedno od ovih imena za određivanje položaja vašeg filtra. Na primjer, na to može ukazati nakon atribut:
Evo svih atributa za točno određivanje mjesta vašeg filtra u stogu:
- nakon - opisuje filtar odmah nakon čega će se prilagođeni filtar staviti u lanac
- prije - definira filter prije kojeg bi naš filter trebao biti smješten u lanac
- položaj - omogućuje zamjenu standardnog filtra u eksplicitnom položaju prilagođenim filtrom
4. Zaključak
U ovom smo kratkom članku stvorili prilagođeni filtar i povezali ga u lanac filtara Spring Security.
Kao i uvijek, svi primjeri koda dostupni su u primjeru Github projekta.