Et tilpasset filter i vårsikkerhetsfilterkjeden

1. Oversikt

I denne raske artikkelen vil vi fokusere på å skrive et tilpasset filter for Spring Security-filterkjeden.

2. Opprette filteret

Spring Security tilbyr en rekke filtre som standard, og det er oftest nok.

Men selvfølgelig er det noen ganger nødvendig å implementere ny funksjonalitet med å opprette et nytt filter som skal brukes i kjeden.

Vi begynner med å implementere org.springframework.web.filter.GenericFilterBean.

De GenericFilterBean er en enkel javax.servlet.Filter implementeringsimplementering som er vårbevisst.

På implementeringen - vi trenger bare å implementere en enkelt metode:

offentlig klasse CustomFilter utvider GenericFilterBean {@Override offentlig ugyldig doFilter (ServletRequest forespørsel, ServletResponse respons, FilterChain kjede) kaster IOException, ServletException {chain.doFilter (forespørsel, svar); }}

3. Bruke filteret i sikkerhetskonfigurasjonen

Vi kan velge enten XML-konfigurasjon eller Java-konfigurasjon for å koble filteret til Spring Security-konfigurasjonen.

3.1. Java-konfigurasjon

Du kan registrere filteret programmatisk som overstyrer konfigurere metode fra WebSecurityConfigurerAdapter. For eksempel fungerer det med addFilterAfter metode på en HttpSikkerhet forekomst:

@Configuration offentlig klasse CustomWebSecurityConfigurerAdapter utvider WebSecurityConfigurerAdapter {@Override-beskyttet ugyldig konfigurering (HttpSecurity http) kaster Unntak {http.addFilterAfter (ny CustomFilter (), BasicAuthenticationFilter.class); }} 

Det er et par mulige metoder:

  • addFilterBefore (filter, klasse) - legger til en filter før posisjonen til det angitte filteret klasse
  • addFilterAfter (filter, klasse) - legger til en filter etter posisjonen til det spesifiserte filteret klasse
  • addFilterAt (filter, klasse) - legger til en filter på stedet for det spesifiserte filteret klasse
  • addFilter (filter) - legger til en filter det må være en forekomst av eller utvide et av filtrene som leveres av Spring Security

3.2. XML-konfigurasjon

Du kan legge til filteret i kjeden ved hjelp av tilpasset filter og et av disse navnene for å spesifisere posisjonen til filteret ditt. For eksempel kan det påpekes av etter Egenskap:

Her er alle attributter for å spesifisere nøyaktig et sted filteret ditt i bunken:

  • etter - beskriver filteret umiddelbart etter hvilket et tilpasset filter blir plassert i kjeden
  • før - definerer filteret før filteret vårt skal plasseres i kjeden
  • posisjon - tillater å erstatte et standardfilter i den eksplisitte posisjonen med et tilpasset filter

4. Konklusjon

I denne raske artikkelen opprettet vi et tilpasset filter og koblet det inn i Spring Security-filterkjeden.

Som alltid er alle kodeeksempler tilgjengelige i Github-prosjektet.


$config[zx-auto] not found$config[zx-overlay] not found