HttpSecurity POST 403 Запрещено - PullRequest
       17

HttpSecurity POST 403 Запрещено

0 голосов
/ 29 октября 2018

Я получаю ошибку 403 Запрещено для конечной точки POST, остальные конечные точки работают должным образом.

У меня есть 4 конечных точки, и мне нужно воспроизвести поведение аутентификации:

GET \users - no authentication
GET \details\1 - needs authentication
GET \users\1 needs authentication
POST \users\1 needs authentication

Мой класс конфигурации:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(AuthenticationManagerBuilder auth)
        throws Exception {
    auth.inMemoryAuthentication()
            .passwordEncoder(org.springframework.security
                .crypto.password.NoOpPasswordEncoder.getInstance())
            .withUser("user").password("pwd")
            .roles("USER").and().withUser("admin").password("pwd")
            .roles("USER", "ADMIN");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers( "/users").permitAll()
            .anyRequest().authenticated()
            .and()
            .httpBasic();
     }
}

Зависимость Maven:

 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-security</artifactId>
  </dependency>

1 Ответ

0 голосов
/ 29 октября 2018

Я подозреваю, что csrf вызывает проблему.

Если вы не используете csrf, но все равно он будет включен по умолчанию.см. Подделка межсайтовых запросов (CSRF) , поэтому попробуйте отключить защиту csrf.

Если вы включите CSRF в безопасности, ваши запросы на публикацию необходимо обновить довключите некоторую дополнительную информацию.Он объясняет, почему GET работает, а POST - нет.

В вашем случае попробуйте отключить его, как показано ниже, и посмотрите, решит ли он проблему.

@Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .csrf().disable();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...