2

認証 (Facebook、Myspace など) を行うカスタム IHttpModule があります。ユーザーに関する詳細とともに HttpApplication インスタンスで処理できるイベントを発生させます。FormsAuthenticationModule が発生させる OnAuthenticate イベントによく似ています。

HttpApplication クラスから取得したこの情報をどこに配置すれば、ASP.NET MVC パイプラインで利用できるようになりますか? Context.Items ディクショナリに貼り付けていました。しかし、(はるかに友好的な) HttpContextBase を使用しているようです。モック/インジェクトが簡単になるようにそこに配置したいと思います。コントローラーで HttpContext.Current を使用していません。

では、基本的に、IHttpModule から MVC コンテキストにデータを取得するにはどうすればよいでしょうか? ざっと見て思いついた最善の方法は、カスタム IControllerFactory を作成して HttpContext からデータを引き出し、それを RequestContext に追加することです。私は自分の質問に答えましたか?邪魔にならない方法はありますか (私が処理できるイベントなど)?

4

1 に答える 1

2

私の推測では、モジュールはルーティングの前に実行されます。もしそうなら、直接 RequestContext に追加するのは時期尚早です。

HttpContext.Current.Items に追加してみます。ルーティングは、その HttpContext を HttpContextBase でラップします。これで、RequestContext.HttpContext.Items を介してどこからでもアクセスできるようになります。

于 2009-01-20T16:53:17.810 に答える