【问题标题】:Calling WebApi from webforms looses authentication从 webforms 调用 Web Api 会丢失身份验证
【发布时间】: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


    【解决方案1】:

    任何遇到这个的人。 只需将所有请求 cookie 解析到 api 调用,它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多