Обработка 403-ошибки весной

Я хочу обработать ошибку 403, чтобы показать нормальное сообщение:

@ExceptionHandler(AccessDeniedException.class)
    @ResponseBody
    public String accessDeniedException () {
        return "my message";
    }

Но AccessDeniedException не обрабатывает ошибку 403.

То же самое не работает

@ResponseStatus(value = HttpStatus.FORBIDDEN)
    @ExceptionHandler(SecurityException.class)
    @ResponseBody

2 ответа

Решение

Как я знаю, если код, вызываемый через ваш контроллер, не генерирует исключение, вы не можете обработать его, используя @ExceptionHandler (или @ControllerAdvice). Например, исключения, сгенерированные непосредственно из Spring Security, такие как исключение CSRF, не могут быть перехвачены таким образом.

Скорее всего, это происходит через Spring Security, Если это так, вам нужно настроить и зарегистрировать access-denied-handler,

Вот подробное руководство, как это сделать.

Другие вопросы по тегам