这个问题可能是由缺少身份验证标头或请求在身份验证后被重定向到标识提供者而导致的。一个可能的解决方法是在HTTP请求中包括身份验证标头,在Blazor应用程序的Startup.cs文件中添加以下代码:
services.AddHttpClient("ServerAPI", client =>
{
client.BaseAddress = new Uri("https://localhost:44351/");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + await GetAccessTokenAsync());
});
其中,GetAccessTokenAsync()是使用OpenID Connect或OAuth 2.0协议获取访问令牌的方法。此外,还需要确保在登录成功后,将身份验证令牌包括在返回HTTP响应中。此外,还需要在Blazor客户端的Program.cs文件中为应用程序添加身份验证支持,如下所示:
builder.Services.AddOidcAuthentication(options =>
{
options.ProviderOptions.Authority = "https://localhost:44363/"; // Identity Provider Endpoint
options.ProviderOptions.ClientId = "client_id";
});
这些步骤应该有助于解决Blazor Hosted客户端登录成功但后续调用显示未经身份验证的问题。
上一篇:Blazor和页面路由