试图在Swift中解码JWT有效负载并遇到困难
static func decodePayload(tokenstr: String) {
//splitting JWT to extract payload
let arr = split(tokenstr) {$0 == "."}
//base64 encoded string i want to decode
let base64String = arr[1] as String
println(base64String) //eyJleHAiOjE0MjY4MjIxNjMsImlkIjoiNTUwYjA3NzM4ODk1NjAwZTk5MDAwMDAxIn0
//attempting to convert base64 string to nsdata
let nsdata: NSData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
//decoding fails because nsdata unwraps as nil
let base64Decoded: NSString = NSString(data: nsdata!, encoding: NSUTF8StringEncoding)!
}
eyJleHAiOjE0MjY4MjIxNjMsImlkIjoiNTUwYjA3NzM4ODk1NjAwZTk5MDAwMDAxIn0
不是有效的Base64编码字符串,因为它的长度不是4的倍数。某些Base64解码器可以容忍此错误,但NSData
方法不能。
因此,这实际上是在服务器端创建Base64编码的字符串时出现的错误。如有必要,您可以通过添加所需的=
字符填充来在应用程序中对其进行修复(已为Swift
2更新了代码):
var base64String = arr[1] as String
if base64String.characters.count % 4 != 0 {
let padlen = 4 - base64String.characters.count % 4
base64String += String(count: padlen, repeatedValue: Character("="))
}
现在解码可以按预期进行:
if let data = NSData(base64EncodedString: base64String, options: []),
let str = String(data: data, encoding: NSUTF8StringEncoding) {
print(str) // {"exp":1426822163,"id":"550b07738895600e99000001"}
}
斯威夫特4:
var base64String = "eyJleHAiOjE0MjY4MjIxNjMsImlkIjoiNTUwYjA3NzM4ODk1NjAwZTk5MDAwMDAxIn0"
if base64String.count % 4 != 0 {
let padlen = 4 - base64String.count % 4
base64String.append(contentsOf: repeatElement("=", count: padlen))
}
if let data = Data(base64Encoded: base64String) ,
let str = String(data: data, encoding: .utf8) {
print(str) // {"exp":1426822163,"id":"550b07738895600e99000001"}
}
问题内容: 我目前正在使用Golang应用程序。我从客户端收到JWT令牌,在Go中,我需要对该令牌进行解码并获取以下信息:用户,名称等。我正在检查可用于处理JWT的库令牌,我来到https://github.com/dgrijalva/jwt- go ,但我看不到如何简单地制作所需的东西。 我有令牌,我需要将信息解码为地图或至少为json。在哪里可以找到如何做的指南?谢谢! 问题答案: 函数接受第
问题内容: 我有一个包含一些图像的mysql数据库。我从php文件接收数据: 现在有了一个Json文件,我得到的是这样的: 我有一个迅速的项目,想将图像解码成UIImage,到目前为止,我还不知道如何解码图像。我有以下几点。 如何解码图像以便显示? 问题答案: 您必须将字典值从AnyObject强制转换为String。您还必须使用.IgnoreUnknownCharacters选项对字符串数据进行
问题内容: 我正在从网站提取JSON文件,收到的字符串之一是: 如何将类似的内容转换为正确的字符? 我创建了一个Xcode Playground来演示它: 问题答案: 这个答案最近针对Swift 5.2和iOS 13.4 SDK进行了修订。 没有做到这一点的直接方法,但是您可以使用魔术使此过程尽可能轻松(请注意,此方法也将剥离所有HTML标记)。 记住 仅从主线程 初始化。它使用WebKit解析下
我想解码我使用Postman收到的jwt令牌,并在RESTAPI中实现它。我该怎么做?我看到有人发布代码来解码jwt令牌(参考:如何在不使用库的情况下在javascript中解码jwt令牌?)但我不明白在《邮差》里怎么做?解码jwt需要什么url?需要什么标题、授权?
我添加了Firebase,允许客户端直接从web应用程序客户端(浏览器)进行身份验证。我正在使用firebase web JS包,它工作得非常好。我可以在浏览器中看到,我收到一个用户对象,其中包含有关该用户的信息,包括。 然后,我需要在我的服务器后端(即python django)上对该用户进行身份验证。在Firebase文档中,我找到了一个我正试图做的操作指南,即验证id令牌。 因为他们没有支持
我一直在使用Charles调试移动应用程序和API之间的通信。 我们现在将客户端(app)和服务器都更改为使用JSON Web令牌(JWT)。 有没有办法配置Charles,以便在浏览请求时对JWT进行解码? 基本上,请求(从移动应用程序到服务器)将由一个包含JWT的标头(授权)组成,当我在Charles中单击该请求时,我想看到: -原始令牌 -解码标头 -解码负载 查看Charles的文档,我发