我将从请求标头中解码 JWT 令牌,它看起来像这样:
eyJzdWIiOiIxIiwiZXZlbnRfaWQiOiI3ZTA3Y2JmNC0wYjYyLTQ1MzMtYmE5ZC1mZGFjNDkyNTNjZTUiLCJpYXQiOiIxNTkwODk4Mzg1IiwiZXhwIjoiMTU5MDkwMTk4NSIImlzcyI6ImxvY2Fsa G9zdDo0NDM4NyIsInRpbWV6b25lX29mZnNldCI6LTcsInVzciI6Im1pbmcuaGlldS4xMzEyIiwiYWxpYXMiOiJNaW5nIEhpZXUiLCJwaG9uZSI6IjA4NDQ1OTAyNTIiLCJlbWFpbCI6ImhpZXVhbWLAZ21ha WwuY29tIn0
public static string Base64Decode(string base64EncodedData)
{
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
return Encoding.UTF8.GetString(base64EncodedBytes);
}
Run Code Online (Sandbox Code Playgroud)
当将上面的标记传递给解码方法时,它会抛出一个异常:
Base-64 字符数组或字符串的长度无效
dotnetfiddle 参考: https: //dotnetfiddle.net/Z2TUz9
但是当在javascript中使用它(使用atob函数)时,它可以正常工作。
谁能告诉我为什么,然后告诉我如何用 C# 解码它?