context.HttpContext.Request.Headers ["Authorization"] возвращает пустое значение - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать веб-API. net core 2.2 с настраиваемой схемой аутентификации, но я не могу прочитать содержимое моего HTTP-запроса, содержащего параметр авторизации. Я создал следующий атрибут:

    [AttributeUsage(validOn: AttributeTargets.Class | AttributeTargets.Method)]
public class ApiKeyAuthAttribute : Attribute, IAsyncActionFilter
{

    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {

        var auth = context.HttpContext.Request.Headers["Authorization"];

        await next();
    }
}

Затем я украсил вызовы атрибутом «[ApiKeyAuthAttribute]». Атрибут вызывается, но «auth» всегда пуст. Я проверил http-вызов, и он содержит следующую строку:

GET http://localhost:5000/secret HTTP/1.1
Authorization: hmacauth 65d3a4f0-0239-404c-8394-21b94ff50604:YasPG+z7r1jyUUqAlXY9G91Ov0IfDfA9sNvW4NLocIU=:4977ca7250414e9c8c8b3d9a703fcf9e:1596303518
Host: localhost:5000

Я предполагаю, что мне нужно что-то добавить при запуске приложения, но я не уверен ..

Это мой текущий запуск приложения

        // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        
        app.UseHttpsRedirection();

        app.UseMvc();
    }

1 Ответ

0 голосов
/ 06 августа 2020

Наконец-то я смог получить заголовок авторизации с помощью этой функции:

context.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues authString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...