Не удается получить доступ к незащищенной конечной точке get при весенней загрузке

#java #spring-boot #spring-security

Вопрос:

В моем контроллере у меня есть две конечные точки, где у одной есть предварительная авторизация аннотации, а у другой нет:

 @GetMapping
public UserResponse getUser(){
 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
 //get and return User...
}


@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostMapping
public UserResponse createUser(@RequestBody UserRequestDetails userDetails){...}
 

Защищенная конечная точка работает нормально, работает только тогда, когда я вошел в систему и в заголовке запроса размещен токен с правильной ролью. Но когда я хочу получить доступ к конечной точке без предварительной авторизации, я всегда получаю статус 403 запрещено. Мне нужен доступ к конечной точке getUser, когда пользователи входят в систему и независимо от возможных ролей, которые у них есть.

Вот моя конфигурация безопасности:

 @Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurity extends WebSecurityConfigurerAdapter{
   @Override
   protected void configure(HttpSecurity http) throws Exception{
       http.csrf().disable()
      .authorizeRequests()
      .antMatchers(HttpMethod.POST, "/login").permitAll()
      .anyRequest().authenticated()
      .and()
      .addFilterBefore(getAuthenticationFilter(),    UsernamePasswordAuthenticationFilter.class)
      .addFilterBefore(jwtAuthorizationFilterBean(), UsernamePasswordAuthenticationFilter.class)
       .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
   }
}
 

спасибо!

Комментарии:

1. Вы можете использовать @PreAuthorize("permitAll()") аннотацию для getUser

2. Это может исходить от одного из ваших пользовательских фильтров. Попробуйте добавить некоторые записи в эти фильтры, чтобы увидеть, отклоняется ли там запрос.