2

我有一个自定义的 IHttpModule 进行身份验证(对 Facebook、Myspace 等)。它引发了一个可以在 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。路由将使用 HttpContextBase 包装该 HttpContext。然后,您应该能够通过 RequestContext.HttpContext.Items 从任何地方访问它。

于 2009-01-20T16:53:17.810 回答