SpringBoot Security antMatchers не работают в паре

Элементарная задача.

Мучаюсь третий день. Что только не пробовал. Настраиваю ConfigSecurity.

Мне нужно, чтобы ADMIN имел доступ ко всем урлам API. А DOCTOR имел доступ только к api/person/.

   protected void configure(HttpSecurity http) throws Exception {
          http.csrf().disable()
          .authorizeRequests()

          .antMatchers("/", "/css", "/js").permitAll()
          .antMatchers("/api/**").hasRole(ADMIN.name())
          .antMatchers("/api/person/**").hasRole(DOCTOR.name())

               .anyRequest()
               .authenticated()
               .and()
               .httpBasic();

}

Эти два antMatchers как ни крути не работают в паре!!!!

Если первым стоит .antMatchers("/api/**").hasRole(ADMIN.name())

То ДОКТОР ничего не видит - "status": 403,

А вот АДМИН всё видит прекрасно.

Меняю их местами

       .antMatchers("/api/person/**").hasRole(DOCTOR.name())
       .antMatchers("/api/**").hasRole(ADMIN.name())

Доктор видит своих персонов, а вот АДМИН уже не видит тех же персонов - "status": 403.

Другие урлы ADMIN из API видит без проблем.

ГДе моя ошибка?


Ответы (1 шт):

Автор решения: Antonio112009

Попробуйте вместо .hasRole(ADMIN.name()) использовать .hasAuthority("ADMIN");

То есть попробуйте реализовать в вашей программе следующий вариант:

.antMatchers("/api/person/**").hasAuthority("DOCTOR")
.antMatchers("/api/**").hasAuthority("ADMIN")
→ Ссылка