使用MVC FormsAuthentication在.NET Web API中进行身份验证

时间:2013-04-09 12:50:07

标签: asp.net-web-api xmlhttprequest cross-domain forms-authentication session-cookies

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

问题

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

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

我们希望通过XMLHttpRequests使用FormsAuthentication来访问.NET Web API。

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

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

PS! FormsAuthentication使用[Authorize]属性与.NET Web API控制器一起使用。只有控制器不能用XMLHttpRequests加入。

使用XMLHttpRequest时fiddler的屏幕截图

XmlHttpRequest

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

View this for detail