2017-10-02 2 views
0

Ich möchte meine Webapp konfigurieren, um alle Anfragen abzulehnen, die keinen richtigen "Content-Type" haben. Beispiel: Jeder Inhaltstyp außer "application/json" sollte zurückgewiesen werden.SpringSecurity - RequestHeaderRequestMatcher

Derzeit mache ich es durch einen benutzerdefinierten Filter, aber ich würde gerne wissen, wie es von "RequestHeaderRequestMatcher" in Sicherheitskonfiguration direkt getan werden kann?

Lets' die folgenden Beispiel Sicherheitskonfigurations nehmen:

EnableWebSecurity 
class SecurityConfig : WebSecurityConfigurerAdapter() { 

    override fun configure(http: HttpSecurity) { 
     http.authorizeRequests() 
       .requestMatchers(matcher) 
       .denyAll() 
       .antMatchers("/css/**", "/index") 
       .permitAll() 
       .antMatchers("/user/**") 
       .hasRole("USER") 

     http.formLogin() 
       .loginPage("/login") 
       .failureUrl("/login-error") 
    } 
} 

Wie soll ich hinzufügen, die neue Anforderung Matcher alle Anfragen nach gültigem Inhaltstyp zu überprüfen?

Antwort

0

Man könnte die RequestHeaderRequestMatcher verwenden, um zu überprüfen helfen, dass eine Anforderung einen bestimmten Header enthält. Außerdem könnte ein genauerer Test durchgeführt werden, um auch einen bestimmten Wert zu testen. Im folgenden Fall müssen alle Anfragen einen Accept -Header mit dem Wert application/json enthalten. Andernfalls wird ein HTTP-Status 406 zurückgegeben.

@Configuration 
class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.requestMatcher(new RequestHeaderRequestMatcher("Accept", "application/json")); 
    } 
} 
Verwandte Themen