我们有一个使用 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 时的截图
直接在浏览器中完成请求时 fiddler 的屏幕截图
要测试的身份验证控制器的屏幕截图