首页 > 解决方案 > “清理”不记名令牌的更好方法

问题描述

我正在从当前请求中添加身份验证标头令牌,以便可以访问另一个 API,但是当我添加AuthenticationHeaderValue方案(不能为空白)时,它会在令牌中复制“Bearer”......所以我只是调用了 Replace()让它工作......

var rawToken = this.HttpContext.Request.Headers["Authorization"];
var cleanedToken = rawToken.ToString().Replace("Bearer ", "", StringComparison.OrdinalIgnoreCase);
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", cleanedToken);
HttpResponseMessage response = await httpClient.SendAsync(requestMessage).ConfigureAwait(false);

但是这个对 Replace() 的调用感觉就像一个肮脏的 hack。是否有经过实战考验的库方法来处理这个问题?

标签: c#http-headersauthorizationhttprequestdotnet-httpclient

解决方案


使用AuthenticationHeaderValue.Parse(rawToken)应该可以完成这项工作,因为它会自动从原始值中提取“承载”方案(或任何其他方案)和令牌,从而无需显式传递它。


推荐阅读