我有一个自定义IHttpModule进行身份验证(对Facebook,Myspace等)。它引发了一个可以在HttpApplication实例中处理的事件,其中包含有关用户的详细信息。它与FormsAuthenticationModule引发的OnAuthenticate事件非常相似。
从HttpApplication类,我应该在哪里放置这些信息,以便它可用于ASP.NET MVC管道?我曾经把它粘贴在Context.Items字典中。但似乎与(更友好的)HttpContextBase我想把它放在那里,这样很容易模拟/注入,我没有在我的控制器中使用HttpContext.Current。
所以,基本上,我如何才能最好地将IHttpModule中的数据导入MVC上下文?我能想到的最好的方法是创建一个自定义IControllerFactory来从HttpContext中提取数据并将其添加到RequestContext中。我回答了自己的问题吗?是否有一种不太干扰的方式(就像我能处理的事件一样)?
答案 0 :(得分:2)
我的猜测是你的模块在路由之前运行。如果是这样,那么将它直接添加到RequestContext中为时尚早。
我会尝试将它添加到HttpContext.Current.Items。路由将使用HttpContextBase包装该HttpContext。然后,您应该可以通过RequestContext.HttpContext.Items。
从任何地方访问它