4

我们有一个使用 AngularJS 框架的单页应用程序,它需要与在不同域上的 .NET Web API 中实现的 API 对话。

问题

API 在 .NET Web API 中实现。为了对用户进行身份验证以访问我们的 API,我们实现了 MVC 单页应用程序模板。这使用 FormsAuthentication 来授予对 API 的访问权限。

我们使用 Fiddler 进行调试。当我们在 API 上访问需要直接在浏览器中进行身份验证的控制器时,我们可以确认用户确实已通过身份验证。正如我们所怀疑的,当我们执行 XMLHttpRequest 时,标头中没有发送任何身份验证 cookie。

我们想要完成的是使用 FormsAuthentication 通过 XMLHttpRequests 访问 .NET Web API。

对此提出的一种解决方案是在 .NET Web API 和 MVC 之间共享会话。我们如何轻松维护 .NET Web API 和项目的 MVC 部分之间的状态?

我们知道,它不是很 RESTful,但我们需要快速解决这个问题。

PS!FormsAuthentication 通过使用 [Authorize] 属性与 .NET Web API 控制器一起使用。只是控制器不能被 XMLHttpRequests 访问。

fiddler 使用 XMLHttpRequest 时的截图

XmlHttpRequest

直接在浏览器中完成请求时 fiddler 的屏幕截图 直接在浏览器中

要测试的身份验证控制器的屏幕截图 认证控制器

4

1 回答 1

0

这是一个CORS请求。您可以使用 Microsoft.AspNet.WebApi.Cors 库。

webapi config在 ASP.NET WEB API 中使用 CORS只需要添加一行:

config.EnableCors("*","*","*");

详细查看此内容

于 2013-09-10T06:16:47.577 回答