在 Blazore Client_side 中解码 Jwt 结果 WASM: System.ArgumentException: IDX12723: 无法解码负载 '[PII 被隐藏

Decoding Jwt in Blazore Client_side results WASM: System.ArgumentException: IDX12723: Unable to decode the payload '[PII is hidden

我正在尝试解码由我的 asp.net 内核 api 生成的 Jwt 这是我用来解码我的 jwt

的代码
        var handler = new JwtSecurityTokenHandler();
        var tokenS = handler.ReadJwtToken(jwt);
        return tokenS;

这在服务器中有效。没问题。 但是,如果我尝试在 Blazor client_side 中使用同一段代码,则会出现此错误。

blazor.webassembly.js:1 WASM: System.ArgumentException: IDX12723: Unable to decode the payload '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]' as Base64Url encoded string. jwtEncodedString: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'. ---> Newtonsoft.Json.JsonSerializationException: Unable to find a default constructor to use for type System.IdentityModel.Tokens.Jwt.JwtPayload. Path 'unique_name', line 1, position 15.

这是我正在使用并试图解码的 jwt 令牌

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjA4ZDdjYzE5LWY2OTgtYTRlOS05ODcxLWE2ZWM1ODg1OTRhZCIsInJvbGUiOiJBZG1pbiIsImdpdmVuX25hbWUiOiJvY2xpY2swMjEiLCJuYmYiOjE1ODQ4MjM0MTYsImV4cCI6MTU4NDgyMzcxNiwiaWF0IjoxNTg0ODIzNDE2fQ.nD3YzBu1qvNelDz2WHcMSGcKkTtTHX98baNTBXeu12M

对于以后遇到此问题的任何人都可以。请不要像我一样先阅读错误。 所以为了了解更多细节,我打开了 PII。 只需将这行代码放在导致错误的行之前。

   IdentityModelEventSource.ShowPII = true;

现在我可以更详细地了解我的问题,这是在打开我的 PII 后出现的错误

Newtonsoft.Json.JsonSerializationException: Unable to find a default constructor to use for type System.IdentityModel.Tokens.Jwt.JwtPayload

经过一番搜索,这就是我的解决方案

把这行代码放在Program.cs的builder.Build()之后;像这样

      var host = builder.Build();
        _ = new JwtPayload();

BOOM 错误消失了,您可以反序列化您的 jwt 并做出很棒的事情。