0

WebAsyncManagerドキュメントによると、

非同期シナリオは、通常どおりスレッド (T1) での要求処理から始まります。同時要求処理は、startCallableProcessing または startDeferredResultProcessing を呼び出すことで開始できます。どちらも別のスレッド (T2) で結果を生成します。結果が保存され、要求がコンテナーにディスパッチされ、保存された結果を使用して 3 番目のスレッド (T3) で処理が再開されます。ディスパッチされたスレッド (T3) 内で、保存された結果に getConcurrentResult() を介してアクセスするか、hasConcurrentResult() を介してその存在を検出できます。

SpringSecurityContextは T1 と T2 で使用できますが、T3 では使用できません。応答をシリアル化するときに、T3 でが必要ですSecurityContext(これは特殊な要件です)。を設定することでこれを修正できます spring.security.filter.dispatcher-types=REQUEST,ERROR,ASYNCが、これにより全体FilterChainが2回実行されるため、回避しようとしています。

を再度SecurityContext実行せずに T3に入れる方法はありますか?FilterChain

4

0 に答える 0