我有一个使用身份服务器4的mvc客户端应用程序,使用cookie认证。
以下是我的配置。
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
Http客户端方法。
public async Task<IList<MenuModel>> GetMenusNavAsync()
{
var response = await _httpClient.GetAsync("api/Menu/GetMenusNavBar");
response.EnsureSuccessStatusCode();
using var responseContent = await response.Content.ReadAsStreamAsync();
return await JsonSerializer.DeserializeAsync<List<MenuModel>>(responseContent);
}
现在我需要在http客户端发送访问令牌到api控制器。如何从身份服务器或Coockie获取访问令牌。Pls suggest...Thanks in advance
一旦你登录了,在MVC应用中,你可以使用 HttpContext.GetTokenAsync
扩展来获取会话中的认证令牌。这是一个标准的ASP.NET Core扩展方法,用于在 Microsoft.AspNetCore.Authentication
命名空间。
的代码会是这样的。
public async Task<IList<MenuModel>> GetMenusNavAsync()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await _httpClient.GetAsync("api/Menu/GetMenusNavBar");
response.EnsureSuccessStatusCode();
using var responseContent = await response.Content.ReadAsStreamAsync();
return await JsonSerializer.DeserializeAsync<List<MenuModel>>(responseContent);
}
找到一个完整的例子 此处