在 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 并做出很棒的事情。
我正在尝试解码由我的 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 并做出很棒的事情。