Роли конфигурации безопасности Spring-boot REST работают неправильно - PullRequest
0 голосов
/ 05 января 2019

Только пользователи с ролью администратора должны иметь возможность отправлять запросы в «пользователи / все», но базовые пользователи тоже могут. Это моя конфигурация безопасности:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable();
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

    http
            .authorizeRequests()
            .antMatchers(HttpMethod.POST, "/users/**").permitAll()
            .antMatchers( "/users/all").authenticated().anyRequest().hasAnyRole("ADMIN")
            .antMatchers("/users/me").authenticated().anyRequest().hasAnyRole("ADMIN", "BASIC_USER")
            .and()
            .formLogin().disable()
            .httpBasic();
}

Это запрос от почтальона

Почему я могу сделать запрос у основного пользователя?

если я поставлю их в следующем порядке:

.antMatchers( "/users/all").authenticated().anyRequest().hasAnyRole("ADMIN")
 .antMatchers("/users/me").authenticated().anyRequest().hasAnyRole("ADMIN", "BASIC_USER")
  .antMatchers(HttpMethod.POST, "/users/**").permitAll()

Это то же самое, но запрос / me больше не работает.

/ все запросы / me request

Теперь ответ на запрос / me равен 403.

Ответы [ 2 ]

0 голосов
/ 05 января 2019
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return this.user.getRoles().stream().map(role -> new SimpleGrantedAuthority(String.format("ROLE_%s", role.getRole()))).collect(Collectors.toList());
}

я изменил роль на role.getRole ()

0 голосов
/ 05 января 2019

Можете ли вы изменить строки, чтобы ограничение администратора было верхним?

...