Метод Spring RestController возвращает статус 403 - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть RestController с таким кодом:

@RestController
@RequestMapping("/")
@CrossOrigin
public class UserController {
    @PostMapping("registration")
    @ResponseStatus(HttpStatus.OK)
    public void registration(@RequestBody @Valid RegistrationRequest registrationRequest,
                             BindingResult result) {

        //business logic
    }
}

Я ожидаю получить ответ без тела и кода состояния 200. Что я получу, так это статус 403 - Запрещено.

P.S. Когда я изменяю этот метод, чтобы вернуть некоторый ненулевой объект, я получаю статус 200 (без @ResponseStatus).

P.P.S. CSRF отключен

Есть идеи?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Проблема была в фильтре авторизации (статус установки 403 был жестко закодирован ...).

0 голосов
/ 03 сентября 2018

Попробуйте следующее:

  • Удалите @RequestMapping("/") из класса вашего контроллера
  • Измените аннотацию для вашего registration метода на @PostMapping("/registration")
  • Убедитесь, что в вашем классе конфигурации безопасности (тот, который вы аннотировали с помощью @EnableWebSecurity) переопределяет метод configure(HttpSecurity http) с помощью http.csrf().disable().authorizeRequests().antMatchers(POST, "/registration").permitAll(). Убедитесь, что вы не отключили CORS здесь, так как вы добавили @CrossOrigin на свой контроллер.
...