Spring MVC 4.1 - 如何在不破坏Spring Security的情况下捕获所有异常

时间:2016-11-07 14:07:49

标签: spring-mvc spring-security exceptionhandler

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

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

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

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

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

0 个答案:

没有答案