会话 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,例如:
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
,并根据需要将值传递到终结点。