Oauth for SpringSecurityに基づくOauth2クライアントをプレーンなJava/SpringからGrailsに移植しようとしていますが、問題が発生しました。問題の核心は、Spring Oauthクライアント実装の設計が、Oauth2RestTemplateからスローされた例外がOAuth2ClientContextFilterのcatchブロックでキャッチされるという仮定に依存しているため、フィルターがリダイレクト応答を発行できるようにすることです。 (宣誓プロバイダーに承認要求を送信するため)。
これはプレーンなJava/Springでは正常に機能しますが、Grailsでは、GrailsDispatcherServletはHandlerExceptionResolversを介してすべての例外を処理するように構成されています。したがって、Oauth2RestTemplateでスローされた例外(Grailsコントローラー内で呼び出される)はGrailsExceptionResolverによってキャッチされ、OAuth2ClientContextFilterによって認識されることはないため、目的のリダイレクト動作が無効になります。
Grailsの例外処理をカスタマイズすることについて私が見つけたすべての議論は、カスタマイズの目的が例外をHTTPエラーコードまたはエラーページビューにマップすることであると想定しているようです。しかし、特定の例外が未処理のまま流れるようにするようにGrailsに指示して、サーブレットフィルターでキャッチできるようにする方法はありますか?または、ModelAndViewを返すのではなく(HandlerExceptionResolverの標準的な期待値のように)、例外を再スローするカスタムHandlerExceptionResolverを挿入することは可能ですか?または、Grails内でOauth for Spring Securityクライアントを機能させるためのより良い方法は他にありますか?