2016-04-22 21 views
10

Aşağıdaki Bahar Güvenlik yapılandırmaya sahip: Yaylı güvenlik filtresini yalnızca güvenli uç noktalara nasıl uygulanır?

httpSecurity 
      .csrf() 
      .disable() 
      .exceptionHandling() 
      .authenticationEntryPoint(unauthorizedHandler) 
      .and() 
      .sessionManagement() 
      .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 
      .and() 
      .authorizeRequests() 
      .antMatchers("/api/**").fullyAuthenticated() 
      .and() 
      .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); 

authenticationTokenFilterBean()

bile /api/** ifadesini eşleşmeyen uç noktaları uygulanır. Ayrıca aşağıdaki yapılandırma kodunu

eklemeyi denedim, ancak bu hala sorunumu çözmedi. Yay güvenliğini yalnızca güvenli URI ifadesiyle eşleşen uç noktalarda filtreler uygulamak için nasıl anlatabilirim? aşağıdakileri yapın Eğer

cevap

9

Ben bir uygulama aynı şartı ile ve temelde belirli bir karınca maç kalıbında için Bahar güvenlik kısıtlı çözmek zorunda (kullanarak antMatcher) olarak aşağıdaki şu şekildedir:

http.antMatcher("/api/**").authorizeRequests() // 
     .anyRequest().authenticated() // 
     .and() 
     .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); 

Okuyabiliyorsun: http sadece /api/**yetki karınca desen eşleştirme istekleri bu yapılandırmaları çağırmak için- authenticated kullanıcıları andauthenticationTokenFilterBean()beforeUsernamePasswordAuthenticationFilter. Diğer tüm istekler için bu yapılandırmanın bir etkisi yoktur.

+1

İzin vermek istedim/api/login yani bypass/api/login tamamen. Bir permitAll() yapıyorum bile, filtre hala aranıyor. Lütfen öneriniz. – rohitpal

+0

Merhaba @rohitpal, sorununuzu çözdünüz mü? Çünkü şimdi bununla tanıştım. – bejond

2

bazı özel uç noktaları için bahar güvenliğini atlamak için teşekkür ederiz:

httpSecurity 
    .authorizeRequests() 
    .antMatchers("/some_endpoints").permitAll() 
    .anyRequest().authenticated() 
    .and() 
    ... 
+0

Bitiş noktaları yerine belirli filtreler için geçerli olan yolları belirtmenin bir yolu var mı? – Edd

+0

/some_endpoint/** gibi bir şey mi kastediyorsunuz/some_endpoint/path1 etc? ... Sonra evet ... antMatcher'ı kabul et '/ api/** ' – phoenix

+0

Cevabınıza teşekkür ederiz, @phoenix. Ne yazık ki, bu benim problemimi çözmüyor. Filtre hala "/ some_endpoints" URL için geçerlidir – Bravo