如何从ASP.NET Core控制器的命名空间System.Net.Http.Headers
获取强类型头类?在源自Controller
的控制器中,Request.Headers
可用,但它只返回IHeaderDictionary
。还有一种扩展方法HeaderDictionaryTypeExtensions.GetTypedHeaders
,但它会返回RequestHeaders
,它只包含某些标题。班级HttpRequestHeaders
拥有最全面的标题列表,但目前尚不清楚如何访问它。
例如,您如何获得AuthenticationHeaderValue
?一个选项是AuthenticationHeaderValue.Parse(Request.Headers["Authorization"])
,但这需要对头名称进行硬编码。也许有一种非硬编码方式可以到达HttpRequestHeaders.Authorization
。
答案 0 :(得分:12)
使用AuthenticationHeaderValue
将标题字符串解析为具有Scheme
和Parameter
属性的对象。
var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);
if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...