Вот умный способ получить заголовок без необходимости go в словаре заголовков. Это также позволит фреймворку проанализировать токен, который, как я полагаю, вы ищете:
[HttpGet, Route("someEndpoint")]
public IActionResult SomeEndpoint([FromHeader] string authorization)
{
if(AuthenticationHeaderValue.TryParse(authorization, out var headerValue))
{
// we have a valid AuthenticationHeaderValue that has the following details:
var scheme = headerValue.Scheme;
var parameter = headerValue.Parameter;
// scheme will be "Bearer"
// parmameter will be the token itself.
}
return Ok();
}
Вы также можете получить заголовок по старинке:
[HttpGet, Route("someEndpoint")]
public IActionResult SomeEndpoint()
{
var authorization = Request.Headers[HeaderNames.Authorization];
if (AuthenticationHeaderValue.TryParse(authorization, out var headerValue))
{
// we have a valid AuthenticationHeaderValue that has the following details:
var scheme = headerValue.Scheme;
var parameter = headerValue.Parameter;
// scheme will be "Bearer"
// parmameter will be the token itself.
}
return Ok();
}
Что приятно, AuthenticationHeaderValue.TryParse
будет охватывать странные случаи, например, если между схемой и токеном есть пробелы более одного раза, или если есть пробелы перед схемой, или пробелы после токена ... и обрезать его для вас.
Таких случаев никогда не должно происходить, но ... они могут , и выполнение accessTokenWithBearerPrefix.Substring("Bearer ".Length);
завершится ошибкой. Вот почему я считаю, что вам нужен более конкретный способ анализа токена.