【发布时间】:2021-08-05 15:08:05
【问题描述】:
我正在尝试升级旧项目的某些部分,并遇到了从 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"));
}
}
【问题讨论】:
标签: c# .net asp.net-web-api webforms