AspNet 核心 401 - 添加令牌时没有 SecurityTokenValidator
AspNet core 401 - No SecurityTokenValidator when adding the token
对于 Jwt 令牌:
HttpResponseMessage responseMsg
var token = responseMsg.Content?
.ReadAsStringAsync()
.GetAwaiter()
.GetResult();
用于授权一个post请求,像这样:
client.BaseAddress = new Uri("https://...");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
我收到这个错误:
Bearer was not authenticated. Failure message: No
SecurityTokenValidator available for token: "eyJ..."
仔细查看 postman 中的请求后,我发现问题出在 header:
上添加到令牌中的 ""
这就是我添加令牌的原因:
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Replace("\"", "")}");
这 有效 ,但对我来说似乎 "dirty"。有没有更好的方法?
您应该反序列化响应 object 以便您可以将其用作字符串:
HttpResponseMessage responseMsg
var response = responseMsg.Content?
.ReadAsStringAsync()
.GetAwaiter()
.GetResult();
var token = JsonConvert.DeserializeObject<string>(response);
return token;
现在字符串已准备好作为不记名令牌包含在 header 中。
对于 Jwt 令牌:
HttpResponseMessage responseMsg
var token = responseMsg.Content?
.ReadAsStringAsync()
.GetAwaiter()
.GetResult();
用于授权一个post请求,像这样:
client.BaseAddress = new Uri("https://...");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
我收到这个错误:
Bearer was not authenticated. Failure message: No SecurityTokenValidator available for token: "eyJ..."
仔细查看 postman 中的请求后,我发现问题出在 header:
上添加到令牌中的 ""这就是我添加令牌的原因:
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Replace("\"", "")}");
这 有效 ,但对我来说似乎 "dirty"。有没有更好的方法?
您应该反序列化响应 object 以便您可以将其用作字符串:
HttpResponseMessage responseMsg
var response = responseMsg.Content?
.ReadAsStringAsync()
.GetAwaiter()
.GetResult();
var token = JsonConvert.DeserializeObject<string>(response);
return token;
现在字符串已准备好作为不记名令牌包含在 header 中。