我正在使用Spring MVC 4.1和Spring Security 3.2。我想优雅地处理在后端的HTTP调用(包括AJAX调用)期间可能发生的所有异常,而不会破坏Spring Security。你会推荐什么解决方案?
最初我想在我的AbstractController类(或@ExceptionHandler(Exception.class)
)中使用@ControllerAdvice
。但是,这种方法存在一个根本问题 - 它还会捕获Spring Security异常(例如AuthenticationException
或AccessDeniedException
)并破坏其功能。我可以捕获一些这些异常并重新抛出它,但是@ExceptionHandlers不喜欢重新抛出(它们产生不必要的日志)。所以我创建了自己的HandlerExceptionResolver。它允许我在不知道如何处理它时不处理异常(通过返回null)。
但是我仍然不喜欢这个解决方案,因为我没有Spring Security可能抛出的所有异常的列表。现在我必须明确检查它是AuthenticationException
还是AccessDeniedException
。
可能会有一些例外,我会意外捕获并破坏SS功能。
你对我的案子有什么建议吗?