4

我正在使用 Spring MVC 4.1 和 Spring Security 3.2。我想在不破坏 Spring Security 的情况下优雅地处理后端 HTTP 调用(包括 AJAX 调用)期间可能发生的所有异常。你会推荐什么解决方案?

最初我想@ExceptionHandler(Exception.class)在我的 AbstractController 类(或@ControllerAdvice)中使用。但是,这种方法存在一个根本问题 - 它还捕获 Spring Security 异常(如AuthenticationExceptionor AccessDeniedException)并破坏其功能。我可以捕获其中一些异常并重新抛出它,但@ExceptionHandlers 不喜欢重新抛出(它们会产生不必要的日志)。所以我创建了自己的 HandlerExceptionResolver。当我不知道如何处理异常时,它允许我不处理异常(通过返回 null)。

但是我仍然不喜欢这个解决方案,因为我没有 Spring Security 可能引发的所有异常的列表。现在我必须明确检查它是否是AuthenticationExceptionor AccessDeniedException

可能会有一些例外,我会意外捕获并破坏 SS 功能。

你对我的案子有什么建议吗?

4

0 回答 0