0

セキュリティ制約を使用してリソースへのアクセスをロックダウンする Java Web アプリケーションがあります。Ajax リクエストで認証が必要な場合に HTTP 401 レスポンスを操作しようとしているので、レスポンスの HTTP ステータスを監視し、必要に応じて変更するフィルタを作成しました。

問題は、認証が必要な場合、401 がブラウザーに送信されるまでフィルターが呼び出されないように見えることです。セキュリティ制約は、リクエスト処理チェーンのフィルターより前にあるようです。私のフィルターの url-pattern は、どのセキュリティ制約よりも一般的です。プラットフォームは WebSphere です。

サーブレット 2.5 仕様でセキュリティ制約とフィルターの優先順位が指定されている場所がわかりません。私は何かを逃しましたか?

4

1 に答える 1

1

まず、指定されていない場合は、コンテナの実装の詳細として残されていることを意味します。
ですから、具体的に検討する必要がありますWebSphere。セキュリティ制約 (私の記憶が正しければ) が実装されているため、リクエスト チェーンのアプリケーション コードより前に実行されるため
、同じことが起こると思います。 私の観点からは、コンテナーに保護を割り当てた場合、リクエストがフィルターに到達した場合、コンテナーの認証メカニズムを既に通過しているはずなので、それは理にかなっています (フィルターはリソースの一部であるというのが私の見解です) )。Tomcat では、を に置き換えることで問題を解決できます。TomcatValves

FilterValve

于 2012-04-27T19:42:38.063 に答える