带有Web API控制器身份验证问题的Blazor服务器 [英] Blazor server with web api controller authenticate issue
本文介绍了带有Web API控制器身份验证问题的Blazor服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Blazor服务器应用程序,我想要添加一个Web API控制器,可以从Postman访问,最终也可以从其他应用程序访问。Blazor应用程序需要身份验证,但不需要Web API。我尝试添加AllowAnonymous
,但收到从邮递员调用它的身份验证错误:
我怀疑我们的安全代理正在添加标头:
是否可以在经过身份验证的Blazor服务器应用程序中托管不安全的(AllowAnonymous)Web API?
也许我只需要以某种方式定制我的API调用?
控制器:
[Route("api/[controller]")]
[ApiController]
[AllowAnonymous]
public class ProfileController : ControllerBase
{
[HttpGet("{year}", Name = "GetProfileResults")]
public async Task<IActionResult> GetProfileResults(int year)
{
var profileResults = repo.GetResults(year);
return Ok(profileResults);
}
}
推荐答案
您必须添加另一个未附加令牌的HTTP客户端。
Program.cs
builder.Services.AddHttpClient(
name: "Anon.ServerAPI",
client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
RazorPage.razor.cs
[Inject]
public IHttpClientFactory HttpClientFactory { get; set; }
protected override async Task OnInitializedAsync()
{
http = HttpClientFactory.CreateClient("Anon.ServerAPI");
videos = await http.GetFromJsonAsync<VideoDto[]>("api/YoutubeVideos");
}
这篇关于带有Web API控制器身份验证问题的Blazor服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文