2015-11-05 10 views
7

Mam następujący przykładowy sposób w moim Repository (z @RepositoryRestResource adnotacji):@PreAuthorize (permitAll) nadal wymaga uwierzytelniania

@Override 
@PreAuthorize("permitAll") 
@PostAuthorize("permitAll") 
public Iterable<User> findAll(); 

ale nadal jestem coraz 401 Unauthorized, zdarzenie, gdy dodam te permitAll adnotacji na całość Interfejs repozytorium.

mam to jako mój WebSecurityConfigurerAdapter:

@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
@Configuration 
class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(final HttpSecurity http) throws Exception { 
     http.authorizeRequests().anyRequest().fullyAuthenticated().and().httpBasic().and().csrf().disable(); 
    } 
} 

Przypuszczam, to ma pierwszeństwo nad tymi adnotacji metoda, bu nie wiem jak to naprawić.

+0

Może pominąłeś nawias w 'permitAll'. Wypróbuj 'permitAll()' –

+0

Czy naprawdę potrzebujesz tych adnotacji? Co się stanie, gdy je usuniesz? –

Odpowiedz

4

Po zastosowaniu filtru zabezpieczeń sieci zastosowano zabezpieczenia metod.

Ponieważ masz anyRequest().fullyAuthenticated() w swojej konfiguracji, twoja metoda findAll nigdy nie zostanie trafiona. anyRequest().fullyAuthenticated() oznacza, że ​​wszystkie próby uzyskania dostępu do punktu końcowego sieci, który nie ma niektórych z pełnego uwierzytelnienia użytkownika, zakończy się niepowodzeniem.

Z JavaDoc

Podaj adresy URL, które są akceptowane przez użytkowników, którzy uwierzytelnionych i były nie „pamiętał”.

Będziesz musiał dodać dodatkową ścieżkę do bezpieczeństwa sieci, niektóre podobne.

protected void configure(final HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
      .anyRequest().fullyAuthenticated() 
      .antMatchers(HttpMethod.GET, '/somePath').permitAll() 
     .and() 
      .httpBasic() 
     .and() 
      .csrf().disable(); 
} 
+0

Czy to naprawdę jedyny sposób? Mam na myśli utrzymywanie ścieżki w dwóch miejscach. Czy nie ma sposobu na opisywanie punktów końcowych, które mają być niezabezpieczone? – Cleankod

+1

Problem polega na tym, że są to dwa całkowicie oddzielne systemy bezpieczeństwa, które działają w różnym czasie. – Leon

Powiązane problemy