我有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);
}
答案 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);
}