2014-07-11 47 views
19

Hem anonim hem de kimliği doğrulanmış erişime izin vermek istediğim tek bir yöntem var.Yay Güvenliği izniAll() anonim erişime izin vermiyor

Java tabanlı yapılandırma ile Spring Security 3.2.4 kullanıyorum. (WebSecurityConfigurerAdapter uzanan benim özel konfigürasyon sınıfında)

geçersiz kılınan yapılandırmak yöntemi şu http bloğu vardır:

http 
     .addFilterBefore(muiltpartFilter, ChannelProcessingFilter.class) 
     .addFilterBefore(cf, ChannelProcessingFilter.class) 
     .authorizeRequests() 
      .anyRequest() 
      .authenticated() 
      .and() 
     .authorizeRequests() 
      .antMatchers("/ping**") 
      .permitAll() 
      .and() 
     .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
     .logout() 
      .logoutUrl("/logout") 
     .logoutSuccessUrl("/login"); 

ping isteği işleyicisi ve yöntem ayrıca giriş işleyicisi içeren bir denetleyici olduğunu ve sahip olduğu Soruna neden olabilecek ayrı bir @PreAuthorize veya başka ek açıklama yok.

Sorun, anonim erişimin reddedilmesi ve kullanıcının giriş sayfasına yönlendirilmesidir. ayıklama düzeyinde açılıyor

, ben Bahar Güvenlik aşağıdaki geribildirim bakın:

[2014-07-11 13:18:04,483] [DEBUG] [org.springframework.security.web.access.intercept.FilterSecurityInterceptor] Secure object: FilterInvocation: URL: /ping; Attributes: [authenticated] 
[2014-07-11 13:18:04,483] [DEBUG] [org.springframework.security.web.access.intercept.FilterSecurityInterceptor] Previously Authenticated: org.sprin[email protected]6faad796: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]ffffa64e: RemoteIpAddress: 192.168.2.128; SessionId: 0EF6B13BBA5F00C020FF9C35A6E3FBA9; Granted Authorities: ROLE_ANONYMOUS 
[2014-07-11 13:18:04,483] [DEBUG] [org.springframework.security.access.vote.AffirmativeBased] Voter: org.sp[email protected]123f2882, returned: -1 
[2014-07-11 13:18:04,483] [DEBUG] [org.springframework.security.web.access.ExceptionTranslationFilter] Access is denied (user is anonymous); redirecting to authentication entry point 

Neyi başarmaya çalışıyorum herhangi bir noktada çağrılabilir ve bir göndereceğiz hangi bir yöntemi sahip olmaktır isteğin oturuma giriş yapılıp yapılmadığını belirten yanıt.

+0

neler desen olarak "/ ping" veya "/ ping *" kullanırsanız olur? –

+0

Eğer Bahar Güvenlik Javadoc yorumlarında pek çok kez gördüğüm _the_ Luke Taylor var mı? Öyle olsa bir onur! Bu davranış,/ping ve/ping * kullanarak maalesef aynıdır. – Zaan

+8

"authorizeRequests(). AnyRequest(). Authenticated()' i sonuncu mu? XML'de elementlerin sıralanması önemlidir, aynı şeyin java config için de geçerli olduğunu düşünebilirim. –

cevap

8

Aynı sorunu gördüm. Emin olun

super.configure(http); anyRequest().authenticated(); varsayılan olarak adlandırılır çağırmadı. Ben böyle yapılandırırken

+0

Bunu yeterince destekleyemiyorum. Bahar Güvenliğini pek çok kez denedim ve vazgeçtim; ve her zaman, bu sebep oldu. Çok teşekkür ederim! –

12

izin sırası önemlidir, çalışır:

.authorizeRequests() 
     .antMatchers("/ping**") 
     .permitAll() 
     .and() 
.authorizeRequests() 
     .anyRequest() 
     .authenticated() 
     .and() 
0

eklemek gerekiyor .annonymous()

http 
.addFilterBefore(muiltpartFilter, ChannelProcessingFilter.class) 
.addFilterBefore(cf, ChannelProcessingFilter.class) 
.anonymous() 
.and() 
.authorizeRequests() 
.anyRequest() 
.authenticated() 
.and() 
     .authorizeRequests() 
      .antMatchers("/ping**") 
      .permitAll() 
      .and() 
     .formLogin() 
      .loginPage("/login") 
      .permitAll() 
      .and() 
     .logout() 
      .logoutUrl("/logout") 
     .logoutSuccessUrl("/login"); 

den Tavsiye: https://stackoverflow.com/a/25280897/256245

İlgili konular