【发布时间】:2018-07-18 11:57:48
【问题描述】:
考虑以下方法:
private (string email, string password) GetCredentials()
{
string head = Request.Headers["Authorization"];
if (head == null || !head.StartsWith("Basic ")) throw new TokenValidationException("Token absent.");
AuthenticationHeaderValue authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]);
if (!authHeader.Scheme.Equals("Basic")) throw new AuthenticationException();
var bytes = Convert.FromBase64String(authHeader.Parameter);
var header = System.Text.Encoding.UTF8.GetString(bytes);
var parts = header.Split(new[] { ':' }, 2);
return (parts[0].ToLowerInvariant(), parts[1]);
}
为什么我们需要先获取字节,然后将它们解码为 UTF8 字符串?
【问题讨论】:
-
到 UTF8 字符串? 不,来自 UTF8 字符串。
-
一个 Base64 字符串代表编码字节,这些字节可以来自任何东西 - 字符串、图像、音频文件、可执行文件等。当你解码时,你会得到字节,然后由你决定来决定如何进一步解释它们。
标签: c# asp.net .net asp.net-web-api