Et brugerdefineret filter i Spring Security Filter Chain

1. Oversigt

I denne hurtige artikel vil vi fokusere på at skrive et brugerdefineret filter til Spring Security-filterkæden.

2. Oprettelse af filteret

Spring Security leverer som standard et antal filtre, og det er for det meste nok.

Men selvfølgelig er det nogle gange nødvendigt at implementere ny funktionalitet med at oprette et nyt filter til brug i kæden.

Vi starter med at implementere org.springframework.web.filter.GenericFilterBean.

Det GenericFilterBean er en simpel javax.servlet.Filter implementeringsimplementering, der er opmærksom på foråret.

På implementeringen - vi behøver kun at implementere en enkelt metode:

offentlig klasse CustomFilter udvider GenericFilterBean {@Override offentlig ugyldig doFilter (ServletRequest anmodning, ServletResponse svar, FilterChain kæde) kaster IOException, ServletException {chain.doFilter (anmodning, svar); }}

3. Brug af filteret i sikkerhedskonfigurationen

Vi kan frit vælge enten XML-konfiguration eller Java-konfiguration for at koble filteret til Spring Security-konfigurationen.

3.1. Java-konfiguration

Du kan registrere filteret, der programmatisk tilsidesætter konfigurere metode fra WebSecurityConfigurerAdapter. For eksempel fungerer det med addFilterAfter metode på en HttpSikkerhed eksempel:

@Configuration offentlig klasse CustomWebSecurityConfigurerAdapter udvider WebSecurityConfigurerAdapter {@Override beskyttet ugyldig konfiguration (HttpSecurity http) kaster undtagelse {http.addFilterAfter (ny CustomFilter (), BasicAuthenticationFilter.class); }} 

Der er et par mulige metoder:

  • addFilterBefore (filter, klasse) - tilføjer en filter før placeringen af ​​det angivne filter klasse
  • addFilterAfter (filter, klasse) - tilføjer en filter efter placeringen af ​​det angivne filter klasse
  • addFilterAt (filter, klasse) - tilføjer en filter på det angivne filter klasse
  • addFilter (filter) - tilføjer en filter det skal være en forekomst af eller udvide et af de filtre, der leveres af Spring Security

3.2. XML-konfiguration

Du kan tilføje filteret til kæden ved hjælp af brugerdefineret filter tag og et af disse navne for at angive placeringen af ​​dit filter. For eksempel kan det påpeges af efter attribut:

Her er alle attributter til præcis at angive et sted, hvor dit filter er i stakken:

  • efter - beskriver filteret, hvorefter et brugerdefineret filter placeres i kæden
  • Før - definerer filteret, inden hvilket vores filter skal placeres i kæden
  • position - tillader udskiftning af et standardfilter i den eksplicitte position med et brugerdefineret filter

4. Konklusion

I denne hurtige artikel oprettede vi et brugerdefineret filter og koblede det ind i Spring Security-filterkæden.

Som altid er alle kodeeksempler tilgængelige i Github-eksemplet.


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