我有两个web应用程序。
第一个web应用程序包含ASP。. NET网页并使用会员资格提供程序进行身份验证。
第二个web应用程序是严格意义上的OData web API站点,需要身份验证。
两个站点在web配置中都有相同的"machineKey validationKey/decryptionKey",并且都使用相同的"Forms"身份验证"Forms name of .TESTAUTH"
当我调用OData服务并检查线程和httpcontext的IDentity时,它们的名称和isauthenticated都是空的。
那么我如何让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);
}
我是这样解决这个问题的
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);
}