asp.net-mvc - 使用 OWIN 将 ASP.NET MVC 应用程序连接到 Azure AD 或使用默认模板

标签 asp.net-mvc azure asp.net-mvc-5 owin azure-active-directory

ASP.NET MVC 5 应用程序中组织帐户的默认模板使用 HttpModule 来处理来自 Azure AD 的响应并创建相应的 ClaimsIdentity。查看 ADAL 库的示例,我发现也可以使用 OWIN 中间件来达到相同的目的。哪种方法更好?为什么模板使用 HttpModules,而不是像个人帐户模板那样使用 OWIN 中间件?

谢谢!

最佳答案

我认为 HttpModules 是在管道中处理 AuthZ 之类的事情的旧方法。 HttpModule 是与 Web 表单同时构建的基础设施的一部分。

如果您正在制作像 Web Api 或 MVC 应用程序这样的现代 Web api,我建议忘记 HttpModule 并使用 Owin 中间件,但如果您使用 Webforms,最好使用 HttpModules(尽管可以在 Webforms 中托管 OWIN)但您不会享受 OWIN 的一些好处)。

这里有 OWIN 概述,您可以在其中看到使用 OWIN 中间件的一些要点:

http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

此外,HttpModules 基于一些发生的事件,但 OWIN Challenges 独立于这些事件。

关于您提出的问题为什么模板使用 HttpModules,我不太确定,但我可以猜测,因为它们在 dll 方面更轻量级,您需要运行示例..

关于asp.net-mvc - 使用 OWIN 将 ASP.NET MVC 应用程序连接到 Azure AD 或使用默认模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30039096/

相关文章:

sql - 提交表单时, azure 上的 Umbraco 轮廓失败

mysql - Node.JS Azure MySQL { [错误 : Cannot enqueue Query after fatal error. ] 代码 : 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR' , 致命: false }

c# - 如何将多个表单值绑定(bind)到一个属性中?

asp.net - typescript 在构建时编译不起作用

jquery - 如何使用 JQuery 在 MVC asp.net 中获取复选框值

asp.net-mvc - 在/error Controller 中检索HTTP错误详细信息

asp.net-mvc - Azure Web App VSTS 预编译 View (不可更新)

c# - 在 Expression<Func<TModel, Object>> 中评估参数结果

c# - 多次调用 Azure 表存储来请求少于 10 行

c# - 不在 sportsstore asp.net mvc 5 中实现接口(interface)