使用 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中文网其他相关文章!