2009-01-17 29 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

相关问题