Безопасность Spring - конечная точка только для администратора - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы сделать «пользователей» с ролью «Администратор» доступными для конечной точки «/ admin / **», к сожалению, в настоящее время никто не имеет доступа к этому API. Что я делаю не так

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/api/login/").permitAll()
                .antMatchers("/api/books/*").authenticated()
                .antMatchers("/api/admin/**").hasAuthority("Administrator")
                .and()
                .addFilter(new JwtFilter(authenticationManager()))
                .csrf().disable();

    }
}

1 Ответ

0 голосов
/ 30 мая 2020

При использовании метода hasAuthority () вам необходимо добавить префикс ROLE_, как показано ниже. Также убедитесь, что вы храните роли с префиксом ROLE_ в базе данных.

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
         http
            .csrf().disable()
            .authorizeRequests()
            .antMatchers("/api/login/").permitAll()
            .antMatchers("/api/admin/**").hasAuthority("ROLE_Administrator")
            .antMatchers("/api/books/*").authenticated()
            .and()
            .addFilter(new JwtFilter(authenticationManager()));

    }
}
...