从 webforms 调用 Web Api 丢失身份验证
Calling WebApi from webforms looses authentication
我正在尝试升级旧项目的某些部分,运行 解决了从 aspx.cs.
调用 webapi 的问题
当我从 htmlpage/angularjs 调用 webapi 时,请求已通过身份验证并且一切正常。
当我尝试从 aspx 页面调用它时,即使 this.User 已通过身份验证(在 aspx 页面上),当在控制器中收到调用时,用户未设置,因此未通过身份验证.
- 我们正在使用基于 owin cookie 的身份验证。
- 在框架 4.7 上。
有没有办法通过包含 RVT cookie 或其他东西来验证 webapi 调用?
来电:
protected void Page_Load(object sender, EventArgs e)
{
var accessList = GetAccessList();
}
private List<ClientAccessEntityWithStatisticsDto> GetAccessList()
{
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
ApiHelper.InitializeClient(baseUrl);
string apiUrl = ApiHelper.ApiClient.BaseAddress + "/client/api/ClientAccess/ClientsUserCanAccessWithStatistics/";
var task = Task.Run(() => ApiHelper.ApiClient.GetAsync(apiUrl));
task.Wait();
return task.Result.Content.ReadAsAsync<List<ClientAccessEntityWithStatisticsDto>>().Result;
}
}
帮手:
public class ApiHelper
{
public static HttpClient ApiClient { get; set; }
public static void InitializeClient(string baseUrl)
{
ApiClient = new HttpClient()
{
BaseAddress = new Uri(baseUrl)
};
ApiClient.DefaultRequestHeaders.Accept.Clear();
ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
}
任何人都遇到过这个。
只需将所有请求 cookie 解析到 api 调用,它就像一个魅力。
我正在尝试升级旧项目的某些部分,运行 解决了从 aspx.cs.
调用 webapi 的问题当我从 htmlpage/angularjs 调用 webapi 时,请求已通过身份验证并且一切正常。
当我尝试从 aspx 页面调用它时,即使 this.User 已通过身份验证(在 aspx 页面上),当在控制器中收到调用时,用户未设置,因此未通过身份验证.
- 我们正在使用基于 owin cookie 的身份验证。
- 在框架 4.7 上。
有没有办法通过包含 RVT cookie 或其他东西来验证 webapi 调用?
来电:
protected void Page_Load(object sender, EventArgs e)
{
var accessList = GetAccessList();
}
private List<ClientAccessEntityWithStatisticsDto> GetAccessList()
{
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
ApiHelper.InitializeClient(baseUrl);
string apiUrl = ApiHelper.ApiClient.BaseAddress + "/client/api/ClientAccess/ClientsUserCanAccessWithStatistics/";
var task = Task.Run(() => ApiHelper.ApiClient.GetAsync(apiUrl));
task.Wait();
return task.Result.Content.ReadAsAsync<List<ClientAccessEntityWithStatisticsDto>>().Result;
}
}
帮手:
public class ApiHelper
{
public static HttpClient ApiClient { get; set; }
public static void InitializeClient(string baseUrl)
{
ApiClient = new HttpClient()
{
BaseAddress = new Uri(baseUrl)
};
ApiClient.DefaultRequestHeaders.Accept.Clear();
ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
}
任何人都遇到过这个。 只需将所有请求 cookie 解析到 api 调用,它就像一个魅力。