Подтвердить что ты не робот

Получить строго типизированный класс заголовка в ядре ASP.NET

Как получить строго типизированный класс заголовка из пространства имен System.Net.Http.Headers из контроллера ядра ASP.NET? В контроллере, полученном из Controller, доступен Request.Headers, но он просто возвращает IHeaderDictionary. Существует также метод расширения HeaderDictionaryTypeExtensions.GetTypedHeaders, но он возвращает RequestHeaders, который имеет только определенные заголовки. Класс HttpRequestHeaders имеет наиболее полный список заголовков, но неясно, как получить к нему доступ.

Например, как бы вы получили AuthenticationHeaderValue? Один параметр - AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]), но для этого требуется жесткое кодирование имени заголовка. Возможно, есть не жестко закодированный способ добраться до HttpRequestHeaders.Authorization.

4b9b3361

Ответ 1

Используйте AuthenticationHeaderValue чтобы проанализировать строку заголовка в объект со свойствами Scheme и Parameter.

var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);

if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...