带有Web API控制器身份验证问题的Blazor服务器 [英] Blazor server with web api controller authenticate issue

查看:7
本文介绍了带有Web API控制器身份验证问题的Blazor服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Blazor服务器应用程序,我想要添加一个Web API控制器,可以从Postman访问,最终也可以从其他应用程序访问。Blazor应用程序需要身份验证,但不需要Web API。我尝试添加AllowAnonymous,但收到从邮递员调用它的身份验证错误:

HTTPS错误401.2-未经授权 由于身份验证标头无效,您无权查看此页面。

我怀疑我们的安全代理正在添加标头:

是否可以在经过身份验证的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆