Spring Security: разрешить общедоступную конечную точку и не разрешать другие конечные точки - PullRequest
1 голос
/ 26 июня 2019

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

Я новичок в Spring и пытаюсь создать базовую аутентификацию безопасности.

Я пытаюсь настроить, чтобы одна конечная точка имела общедоступный доступ, а другие администраторы - пользовательский доступ.

Это моя идея:

localhost: 8080 / api / teacher / findAll -> Публичный доступ

localhost: 8080 / api / teacher / admin / findAll -> Только доступ ADMIN

localhost: 8080 / API / учителя / пользователь / findAll -> Доступ только для пользователей

Вот мой код:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("user").roles("USER")
        .and().withUser("admin").password("admin").roles("ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests()
        .antMatchers("/teacher/findAll").permitAll()
        .antMatchers("/teacher/admin/findAll").hasRole("ADMIN")
        .antMatchers("/teacher/user/findAll").hasRole("USER")
        .antMatchers("*/create/**").hasRole("ADMIN")
        .and().httpBasic();
    }

    @SuppressWarnings("deprecation")
    @Bean
    public static NoOpPasswordEncoder passwordEncoder() {
        return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
    }
}

1 Ответ

1 голос
/ 26 июня 2019

Вы можете попытаться создать следующие конечные точки:

1) localhost: 8080 / api / teacher / all / findAll -> Публичный доступ

2) localhost: 8080 / api / teacher/ admin / findAll -> Только ADMIN Access

3) localhost: 8080 / api / teacher / user / findAll -> Только USER Access

Тогда ваш метод настройки будет выглядеть так:

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().authorizeRequests()
    .antMatchers("/teacher/all/**").permitAll()
    .antMatchers("/teacher/admin/**","*/create/**").hasRole("ADMIN")
    .antMatchers("/teacher/user/**").hasRole("USER")
    .and().httpBasic();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...