首页 >后端开发 >C++ >如何使用 JwtSecurityTokenHandler 解码 JWT 令牌并解决'字符串需要采用紧凑 JSON 格式”错误?

如何使用 JwtSecurityTokenHandler 解码 JWT 令牌并解决'字符串需要采用紧凑 JSON 格式”错误?

Barbara Streisand
Barbara Streisand原创
2025-01-06 21:46:40558浏览

How to Decode JWT Tokens using JwtSecurityTokenHandler and Resolve

使用 JwtSecurityTokenHandler 解码 JWT 令牌

使用 JwtSecurityTokenHandler 类解码 JWT 令牌可以是一项简单的任务。但是,如果您遇到诸如“字符串需要采用紧凑 JSON 格式”错误之类的问题,请按以下方法解决它。

正如问题中提到的,JwtSecurityTokenHandler 要求字符串采用特定格式: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL,Base64UrlEncodedSignature.

要解决此问题,解决方案涉及转换 ReadToken 的结果或使用 ReadJwtToken 方法。它的工作原理如下:

使用强制转换方法:

var stream = "[encoded jwt]";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
var tokenS = jsonToken as JwtSecurityToken;

tokenS 变量现在是 JwtSecurityToken 类型,允许使用 tokenS.Claims 访问声明。

使用 ReadJwtToken方法:

var token = "[encoded jwt]";
var handler = new JwtSecurityTokenHandler();
var jwtSecurityToken = handler.ReadJwtToken(token);

或者,您可以使用 ReadJwtToken 方法直接读取令牌。此方法还返回一个 JwtSecurityToken 对象。

正确解码令牌后,您可以使用以下方式检索声明:

var jti = tokenS.Claims.First(claim => claim.Type == "jti").Value;

这将从令牌中检索 jti 声明值。

请记住,使用 JwtSecurityTokenHandler 解码 JWT 令牌时必须使用正确的格式,以避免错误并确保正确访问索赔。

以上是如何使用 JwtSecurityTokenHandler 解码 JWT 令牌并解决'字符串需要采用紧凑 JSON 格式”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn