Почему для загрузки значений БД требуется аутентификация?

В моем приложении spring-boot + reactjs я использовал безопасность Spring для аутентификации и управления ролями.

Приложение работает нормально, но для загрузки значений для раскрывающихся списков требуется успешная аутентификация. Эти раскрывающиеся списки являются динамическими и загружаются из таблицы БД. На самом деле я не добавил никаких ограничений безопасности для базы данных запросов.

Может ли кто-нибудь помочь мне определить проблему?

Это мой git url

Взгляните, например, на 'src/main/java/com/example/polls/controller/FamilyController.java'.

Я попытался поместить следующий код в SecurityConfig.java, но это не сработало.

http.authorizeRequests() 
    .antMatchers("/brands").permitAll()      
    .antMatchers("/familys").permitAll()
    .antMatchers("/models").permitAll(); 

В консоли отображается

ERROR 9640 --- [io-8080-exec-10] c.e.p.s.JwtAuthenticationEntryPoint      : Responding with unauthorized error. Message - Full authentication is required to access this resource
ERROR 9640 --- [nio-8080-exec-1] c.e.p.s.JwtAuthenticationEntryPoint      : Responding with unauthorized error. Message - Full authentication is required to access this resource

измененный код:

         http
        .cors()
            .and()
        .csrf()
            .disable()
        .exceptionHandling()
            .authenticationEntryPoint(unauthorizedHandler)
            .and()
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
        .authorizeRequests()
            .antMatchers(
                "/",
                "/favicon.ico",
                "/**/*.png",
                "/**/*.gif",
                "/**/*.svg",
                "/**/*.jpg",
                "/**/*.html",
                "/**/*.css",
                "/**/*.js"
                ) .permitAll()
            .antMatchers("/api/auth/**")
                .permitAll()
            .antMatchers("/api/user/checkUsernameAvailability", "/api/user/checkEmailAvailability")
                .permitAll()
            .antMatchers(HttpMethod.GET, "/api/polls/**", "/api/users/**")
                .permitAll()
            .antMatchers("/api/brands").permitAll()      
            .antMatchers("/api/familys").permitAll()
            .antMatchers("/api/models").permitAll()
            .anyRequest()
                .authenticated();

   http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш контроллер сопоставлен "/api/familys"

....
@RestController
@RequestMapping("/api/familys")
public class FamilyController { 
....

Поэтому ваши сопоставители шаблонов безопасности должны начинаться сначала с /api/.

А также убедитесь, что порядок объявления этой конечной точки до .anyRequest().authenticated();, порядок важен в весеннюю секунду.

  .antMatchers(HttpMethod.GET, "/api/polls/**", "/api/users/**").permitAll()
  .antMatchers("/api/brands/**").permitAll()      
  .antMatchers("/api/familys/**").permitAll()
  .antMatchers("/api/models/**").permitAll()
.anyRequest()
        .authenticated();; 

Другие вопросы по теме