ExceptionHandler перехватывает AccessDeniedException при использовании @Order с LOWEST_PRECEDENCE? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть ExceptionHandler (весна и безопасность 5), который перехватывает все исключения, не обнаруженные другим ExceptionHandler, это прекрасно работает:

@ControllerAdvice(basePackageClasses = BaseBackendController.class)
@Order(Ordered.LOWEST_PRECEDENCE)
public class GlobalExceptionHandler {
  @ExceptionHandler(value = {Exception.class, RuntimeException.class})
  public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
  }
}

Но вышеупомянутый обработчик исключений также ловит AccessDeniedException, хотя я добавил аннотацию @Orderсо значением LOWEST_PRECEDENCE.

Как темп.Решение Я добавил это в defaultErrorHandler:

if(e instanceof AccessDeniedException){
      throw  (AccessDeniedException)e;
    }

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

Есть кто-нибудьзнаете, почему AccessDeniedException перехватывается моим ExceptionHandler и не обрабатывается весенней безопасностью?

1 Ответ

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

Вы должны добавить еще @ExceptionHandler для AccessDeniedException, а затем просто повторно выдать исключение в методе обработчика.Это распространит AccessDeniedException на Spring Security и может обработать ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...