当客户端位于不同的域中时,使用表单身份验证与Web API?

时间:2013-07-06 19:08:59

标签: asp.net-web-api

相关问题:

Authentication in .NET Web API using MVC FormsAuthentication

我有一个客户端应用程序,它位于我的WebAPI解决方案的域之外(现在在localhost上有两个不同的解决方案 - 一个在端口X上,另一个在端口Y上)。我正在尝试使用这样的代码进行表单身份验证:

if (WebSecurity.Login(model.UserName, model.Password, persistCookie: true))
            {
                var response = Request.CreateResponse(HttpStatusCode.OK, "logged in successfully");
                return response;
            }

像POSTMan这样的东西可行,但是使用客户端/ JS应用程序时,cookie不会被保存,因此用户永远不会真正进行身份验证。我看到_RequestVerificationToken,但从未看到.ASPXAUTH令牌。

此应用程序的要求是通过使用WebSecurity设置cookie来使用表单身份验证。当客户端和服务器位于不同的域时,这是否可行?

如果我能提供任何其他信息以使此问题更清晰,请告诉我。

1 个答案:

答案 0 :(得分:2)

假设您使用的是CORS。默认情况下,cookie未启用CORS。在jQuery中,您需要设置

xhrFields: {
       withCredentials: true
}

此外,服务器必须发送响应标头Access-Control-Allow-Credentials: true