【问题标题】:Alamofire Invalidate credentialAlamofire 使凭证无效
【发布时间】:2016-08-10 03:39:46
【问题描述】:
我正在使用Alamofire 做一个简单的请求
Alamofire.request(.GET, URL)
.authenticate(user: user, password: password)
.responseJSON { response in
...
}
在第一次有效请求后,我用无效的凭据更改了凭据,请求成功,但它应该失败。
如何使以前的凭据无效?
请求成功后,如果我更改凭据,Alamofire 会验证之前的凭据。
如何使以前的凭据无效?
【问题讨论】:
标签:
ios
iphone
swift
authentication
alamofire
【解决方案1】:
添加授权标头对我有帮助。
let user = "user"
let password = "password"
let credentialData = "\(user):\(password)".dataUsingEncoding(NSUTF8StringEncoding)!
let base64Credentials = credentialData.base64EncodedStringWithOptions([])
let headers = ["Authorization": "Basic \(base64Credentials)"]
Alamofire.request(.GET, "https://httpbin.org/basic-auth/user/password", headers: headers)
.responseJSON { response in
debugPrint(response)
}
【解决方案2】:
我经历了完全相同的事情。 iOS 的答案应该有效,无论如何我会使用 swift3 提供代码 sn-p 以减少研究时间。
let user = "aaaaa"
let password = "myPassword"
let plainString = "\(user):\(password)"
let plainData = plainString.data(using: .utf8)
let base64String = plainData?.base64EncodedString(options:NSData.Base64EncodingOptions(rawValue: 0))
let authString = "Basic " + base64String!
// Set in in Authorize header like...
let headers: HTTPHeaders = [
"Authorization": authString,
"Accept": "application/json"
]
// And use it like this..
Alamofire.request("https://httpbin.org/headers", headers: headers).responseJSON { response in
debugPrint(response)
}
这里是讨论这个案例的地方>>https://github.com/Alamofire/Alamofire/issues/32