Alamofire V3 如何使凭证无效
Posted
技术标签:
【中文标题】Alamofire V3 如何使凭证无效【英文标题】:Alamofire V3 how to invalidate credential 【发布时间】:2016-01-13 08:27:31 【问题描述】:我在 ios 9 中使用 Alamofire V3,我正在做一个简单的请求,如 README 中所述
Alamofire.request(.GET, WS_URL)
.authenticate(user: user, password: password)
.validate(statusCode: 200..<300)
.responseJSON response in
...
在第一次有效请求后,我用无效的凭据更改了凭据,请求成功,但它应该失败。
如何使以前的凭据无效?
UPDATE
我找到了一个可能的解决方案,但我不确定它是不是最好的。
let plainString = "\(user):\(password)
let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
let headers = ["Authorization": "Basic " + base64String!]
Alamofire.request(.GET, urlRequest, headers: headers)
.authenticate(usingCredential: self.credential)
.responseJSON responseJson in
...
谢谢
【问题讨论】:
你是怎么解决的? 如我的评论中所写。更多解释请阅读:github.com/Alamofire/Alamofire#http-basic-authentication:根据您的服务器实现,授权标头也可能是合适的 【参考方案1】:如documentation中所写
根据您的服务器实现,授权标头也可能是合适的
【讨论】:
【参考方案2】:假设您的端点没问题,并且您得到了成功的响应...
let
定义了一个一旦设置就不能修改的常量。
var
定义了一个可以的变量。
尝试使用一个变量,如果你已经分配它编译然后重新编译。否则为您的变量使用不同的名称。
print
他们看看他们的价值观。
【讨论】:
这是一个示例代码。问题不在于声明为 let 或 var 的变量。真正的代码从 uitextfields 中读取值。 顺便说一句,我已经编辑了删除用户名和密码的代码以避免混淆【参考方案3】:在这些情况下,“重置”命令是你最好的朋友:
$ git reset --soft HEAD~1
重置会将您当前的 HEAD 分支倒回到指定的修订版。
注意 --soft 标志:这可确保保留未完成修订中的更改。运行命令后,您会在工作副本中发现更改为未提交的本地修改。
如果您不想保留这些更改,只需使用 --hard 标志。 确保仅在您确定不再需要这些更改时才执行此操作。
$ git reset --hard HEAD~1
【讨论】:
以上是关于Alamofire V3 如何使凭证无效的主要内容,如果未能解决你的问题,请参考以下文章