【发布时间】:2017-04-15 07:50:37
【问题描述】:
我使用 Laravel 5.3 作为我的 iOS 应用程序的 API。当我尝试使用标头和参数进行 HTTP 调用时,出现 401 错误:
message = "无法解码令牌:令牌 \ “可选(\” “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjUsImlzcyI6Imh0dHA6XC9cL2xvY2FsaG9zdDo4MDAwXC9hcGlcL2F1dGhcL3Bvc3RMb2dpbiIsImlhdCI6MTQ4MDUzNzQxOCwiZXhwIjoxNDgwNTQxMDE4LCJuYmYiOjE0ODA1Mzc0MTgsImp0aSI6ImMyZmYxNzI5N2U5OGU4MzkzYzZkZWRmNTZlN2ZkMzNkIn0.u6sQqlq5k-B5jhZ7EymkXLlcTIQ-i7X_83an5irwTss \””是一个 无效的 JWS"; “状态码”= 401; }
这是发出 HTTP 请求的代码:
let headers = ["Authorization":"Bearer \(token)"]
request(url! , method: .get, parameters: nil, encoding: JSONEncoding.default , headers: headers )
.responseJSON { response in
print("RESPONSE \(response)")
我做了一些谷歌搜索,发现了一个名为 JWTDecode.swift 的用于编码 JWT 的包。这是代码的链接:https://github.com/auth0/JWTDecode.swift。我仍然无法弄清楚如何解决这个问题。
【问题讨论】:
-
在错误消息中,token 是 Optional 并且没有被解包,这可能是原因。
-
我将令牌保存在这样的容器中 `var token: String? { didSet { let defaults = UserDefaults.standard defaults.set(token, forKey:DefaultsKey.token) } ` 然后在标头数组中调用它
let headers = ["Authorization" : "Bearer\(UserDataSingleton.sharedDataContainer.token)"]n我应该在哪里解包? -
用户 simpleBob 的答案似乎正确。
标签: json swift laravel token jwt