1. ホーム
  2. spring

[解決済み] OncePerRequestFilterとは何ですか?

2023-04-15 18:23:18

質問

ドキュメントによると org.springframework.web.filter.OncePerRequestFilter " は、1つのリクエストにつき1回だけ実行されることを保証します。 となります。どのような状況であれば、フィルターは1回のリクエストにつき2回以上実行される可能性がありますか?

どのように解決するのですか?

<ブロッククオート

どのような状況で、1つのフィルタが1回のリクエストにつき2回以上実行される可能性がありますか?

フィルタチェイン上のフィルタが複数回実行される可能性があります。

リクエストはリクエストディスパッチャを使って別の (あるいは同じ) サーブレットにディスパッチされるかもしれません。


一般的なユースケースはSpring Securityで、認証とアクセス制御の機能は通常、メインアプリケーションのサーブレットの前に置かれるフィルタとして実装されます。 リクエストがリクエストディスパッチャで送信されると、それを処理するサーブレットに到達する前に、再度フィルタチェーンを通過する必要があります (あるいは別のフィルタチェーンを通過する可能性もあります)。 問題は、セキュリティフィルタの動作のいくつかは、リクエストに対して一度だけ実行されるべきであるということです。 そのため この フィルタが必要なのです。