使用@Security 时作为 RuntimeException 引发的异常

Exceptions raised as RuntimeException when using @Security

在我的应用程序中,我有一个扩展异常的 ApplicationException class。对于许多错误情况,我会使用预定义消息引发此 ApplicationException。我还有一个扩展 HttpErrorHandler 的错误处理程序 class。在那里,在 onServerError() 方法中,我检查引发的异常是否是 ApplciationException。如果是这样,我 return 将错误消息作为 JSON 字符串。否则,我会 return 一条通用错误消息。

一切都按预期进行,直到我将 @Security 注释添加到我的控制器方法中。从那时起,所有异常都被提升到 java.lang.RuntimeException.

例如,抛出的内容如下:

- with @Security annotation: java.lang.RuntimeException: com.mypackage.ApplicationException: Invalid value supplied for entered parameter 'sort'
- without @Security annotation: com.mypackage.ApplicationException: Invalid value supplied for entered parameter 'sort'

我的身份验证器 class(扩展 Security.Authenticator 的那个)仅覆盖了 getUsername()onUnauthorized() 方法。

有没有办法在使用 @Security 的同时保留 ApplicationException

谢谢

这是非常不幸的(也是不好的做法),但是 @Security 注释默认情况下有一个 catch all 异常处理程序,如 here.

注意:ThrowableExceptionRuntimeException

的父级

我认为你唯一的选择是用你自己的(@MySecurity?)重新实现 @Security 动作包装器并重新实现 call 方法,特别是没有抓住所有的处理程序,也许放上你自己的。

希望有所帮助。