昔は:
Response.Redirect を使用しました。これは、302 応答ヘッダーを設定し、ThreadAbortException を発生させて、リダイレクト後に他のことが起こらないようにします。
今、MVCで:
RedirectResult を返します。これにより、ThreadAbortException によるパフォーマンスの問題が回避され、パイプラインの残りの部分が実際にブラウザーに結果を返す前に結果を検査できるようになります。これはリダイレクトについての別の考え方です。現在、リダイレクトは実行を停止するのではなく、関数から戻ることに似ています。
私の質問は、これらのパターンの混合と一致に関係しています。
これが要件です。MVC サイトがあり、サイトには認証を担当する HttpModule が含まれています。認証に問題が発生すると、Cookie が削除され、外部Web ページにリダイレクトされます。したがって、HttpModule は、リダイレクト ヘッダーを送信するか、コントロールを MVC サイトに渡すかを決定します。リダイレクト ヘッダーを送信する場合は、実行を停止する必要があります。認証に失敗した場合、どのような方法、形状、または形式でもサイトにアクセスできないようにする必要があります。
これを行う「正しい」方法は何ですか?いつものように、HttpModule は単純に Response.Redirect を使用する必要がありますか? それとも、MVC パターンとより一貫性のあるこれを達成するための巧妙な方法はありますか? HttpModule がパイプラインに処理を停止するように指示する方法はありますか?
または、HttpModule を使用しない、まったく異なるパターンを使用する必要がありますか? おそらくMVCフィルターですか?問題は、モジュールとサイト自体の間のモジュール性/関心の分離が非常に重要であるということです。誰にもお勧めはありますか?