2009-01-17 63 views
2

我有一個自定義IHttpModule進行身份驗證(對Facebook,Myspace等)。它引發了一個事件,可以在HttpApplication實例中處理有關用戶的詳細信息。這很像是FormsAuthenticationModule引發的OnAuthenticate事件。如何將數據從IHttpModule獲取到ASP.NET MVC RequestContext?

從HttpApplication類中,我應該在哪裏放置這些信息,因此它可用於ASP.NET MVC管道?我曾經把它粘在Context.Items字典中。但似乎與(更友好)HttpContextBase我想把它放在那裏,這樣很容易模擬/注入,我沒有在我的控制器中使用HttpContext.Current。

那麼,基本上,我如何最好地從IHttpModule獲取數據到MVC上下文中?我可以從快速瀏覽中得到最好的結果,就是創建一個自定義的IControllerFactory,將數據從HttpContext中提取出來並添加到RequestContext中。我回答了我自己的問題嗎?有沒有一種侵擾性的方式(就像我可以處理的事件)?

回答

2

我的猜測是你的模塊在路由之前運行。如果是這樣,那麼將其直接添加到RequestContext還爲時尚早。

我會嘗試將其添加到HttpContext.Current.Items。路由將用HttpContextBase包裝該HttpContext。您應該可以通過RequestContext.HttpContext.Items從任何地方訪問它。

+0

我明白了,所以將項目從HttpContext複製到HttpContextBase。很高興知道。 – 2009-01-21 02:42:44

相關問題