调用OData服务时发送授权cookie

时间:2014-07-24 20:35:14

标签: asp.net cookies asp.net-web-api odata

我有2个网络应用程序 第一个Web应用程序包含ASP.NET网页,并使用成员资格提供程序进行身份验证 第二个Web应用程序严格来说是需要身份验证的OData WEB API站点。

两个站点都具有相同的" machineKey validationKey / decryptionKey"在网络配置中,两者都在使用" Forms"使用相同的"表示名称.TESTAUTH"

当我调用OData服务并检查线程和httpcontext的IDentity时,它们对于名称都是空的并且是经过身份验证的。

那么如何让OData识别.TESTAUTH cookie?




编辑:
那么这就是我所做的。它看起来不对,但如果有人知道更好的方式,请告诉我。

dbContext.BuildingRequest += AddCookie;
private void AddCookie(object sender, Microsoft.OData.Client.BuildingRequestEventArgs e)
{       
    var authCookie = HttpContext.Current.Request.Cookies(".TESTAUTH");

    e.Headers.Add("Cookie", ".TESTAUTH=" + authCookie.Value);
}

1 个答案:

答案 0 :(得分:3)

以下是我为解决问题所做的工作。

dbContext.BuildingRequest += AddCookie;
private void AddCookie(object sender, Microsoft.OData.Client.BuildingRequestEventArgs e)
{       
    var authCookie = HttpContext.Current.Request.Cookies(".TESTAUTH");

    e.Headers.Add("Cookie", ".TESTAUTH=" + authCookie.Value);
}