【问题标题】:Blazor server with web api controller authenticate issue带有 Web api 控制器的 Blazor 服务器身份验证问题
【发布时间】:2022-01-14 07:27:44
【问题描述】:

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

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

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

是否可以在经过身份验证的 Blazor Server 应用程序中托管不安全的 (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);
    }
}

【问题讨论】:

    标签: authentication blazor asp.net-core-webapi


    【解决方案1】:

    您必须添加另一个没有附加令牌的 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");
    }
    

    【讨论】:

    • 有没有办法在 Postman 中效仿?
    • @SteveGreene 如果没有安全措施,邮递员应该工作。
    猜你喜欢
    • 1970-01-01
    • 2022-12-28
    • 2021-06-04
    • 2021-04-30
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多