会话 Cookie 和 HttpClient 在 MVC 中运行

本文关键字:MVC 运行 HttpClient Cookie 会话 | 更新日期: 2023-09-27 18:31:15

我正在努力解决 MVC 应用程序和 Azure 移动应用程序之间的身份验证问题。

MVC 应用调用移动应用登录结束https:<api>/.auth/login/microsoftaccout?post_url_login=location

这一切都有效,移动应用程序调用 Live 进行身份验证并重定向回 MVC 应用程序工作正常。

在 MVC 站点上,指向 API 的任何<a>链接都会按预期授权并返回结果。但是在控制器中使用 httpclient 会失败并出现 401。

当我查看跟踪和 Azure 移动应用日志时,单击<a>链接,我会看到一个添加到请求标头的AppServiceAuthSession cookie。Httpclient 跟踪没有这个。

如何让 HttpClient 的行为方式与单击<a>链接相同?

会话 Cookie 和 HttpClient 在 MVC 中运行

您可以添加 cookie,例如:

var cookies = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookies })
using (var client = new HttpClient(handler) { BaseAddress = new Uri("http://example.com")})
{
    var cookieDomain = "some domain";
    cookies.Add(cookieDomain, new Cookie("CookieName", "cookie_value"));
    // Use client
}

理论上,您可以在 MVC 控制器上读取 Cookie Response.Cookies,并根据需要将值传递到终结点。