【问题标题】:Alamofire V3 how to invalidate credentialAlamofire V3 如何使凭证无效
【发布时间】: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
            ...
            }

谢谢

【问题讨论】:

标签: alamofire


【解决方案1】:

documentation中所写

根据您的服务器实现,授权标头也可能是合适的

【讨论】:

    【解决方案2】:

    假设您的端点没问题,并且您得到了成功的响应...

    let 定义了一个一旦设置就不能修改的常量。

    var 定义了一个可以的变量。

    尝试使用一个变量,如果你已经分配它编译然后重新编译。否则为您的变量使用不同的名称。

    print他们看看他们的价值观。

    【讨论】:

    • 这是一个示例代码。问题不在于声明为 let 或 var 的变量。真正的代码从 uitextfields 中读取值。
    • 顺便说一句,我已经编辑了删除用户名和密码的代码以避免混淆
    【解决方案3】:

    在这些情况下,“重置”命令是你最好的朋友:

     $ git reset --soft HEAD~1
    

    重置会将您当前的 HEAD 分支倒回到指定的修订版。

    注意 --soft 标志:这可确保保留未完成修订中的更改。运行命令后,您会在工作副本中发现更改为未提交的本地修改。

    如果您不想保留这些更改,只需使用 --hard 标志。 确保仅在您确定不再需要这些更改时才执行此操作。

    $ git reset --hard HEAD~1
    

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 2015-07-21
      • 2016-06-22
      • 2020-05-03
      相关资源
      最近更新 更多