Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Swift中解码JWT(JSON Web令牌)令牌?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的JWT令牌

我如何解码这个,以便我可以像这样得到有效载荷

解决方法

如果你对使用图书馆没问题,我会建议这个 https://github.com/auth0/JWTDecode.swift

然后导入库导入JWTDecode并执行.

let jwt = try decode(jwt: token)

由于您不想包含此库,因此我提供了所需的部件以使其工作.

func decode(jwtToken jwt: String) -> [String: Any] {
  let segments = jwt.components(separatedBy: ".")
  return decodeJWTPart(segments[1]) ?? [:]
}

func base64UrlDecode(_ value: String) -> Data? {
  var base64 = value
    .replacingoccurrences(of: "-",with: "+")
    .replacingoccurrences(of: "_",with: "/")

  let length = Double(base64.lengthOfBytes(using: String.Encoding.utf8))
  let requiredLength = 4 * ceil(length / 4.0)
  let paddingLength = requiredLength - length
  if paddingLength > 0 {
    let padding = "".padding(toLength: Int(paddingLength),withPad: "=",starTingAt: 0)
    base64 = base64 + padding
  }
  return Data(base64Encoded: base64,options: .ignoreUnkNownCharacters)
}

func decodeJWTPart(_ value: String) -> [String: Any]? {
  guard let bodyData = base64UrlDecode(value),let json = try? JSONserialization.jsonObject(with: bodyData,options: []),let payload = json as? [String: Any] else {
      return nil
  }

  return payload
}

像这样称呼它:

decode(jwtToken: TOKEN)

大佬总结

以上是大佬教程为你收集整理的如何在Swift中解码JWT(JSON Web令牌)令牌?全部内容,希望文章能够帮你解决如何在Swift中解码JWT(JSON Web令牌)令牌?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。