如何在Swift中解码JWT(JSON Web令牌)令牌?

如何在Swift中解码JWT(JSON Web令牌)令牌?,第1张

概述我有这样的JWT令牌 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 我如何解码这个,以便我可以像这样得到有效载荷 { “sub”: “123456 我有这样的JWT令牌

eyJhbGciOiJIUzI1NIISInR5cCI6IkpXVCJ9.eyJzDWIiOiIxMjM0NTY3odkwIiwibmFtZSI6IkpvaG4gRG9liiwiYWRtaW4iOnRyDWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

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

{ “sub”: “1234567890”,“name”: “John Doe”,“admin”: true }

解决方法 如果你对使用图书馆没问题,我会建议这个 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令牌)令牌?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/999918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存