Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 具有身份验证的Vapor客户端_Swift3_Vapor - Fatal编程技术网

Swift3 具有身份验证的Vapor客户端

Swift3 具有身份验证的Vapor客户端,swift3,vapor,Swift3,Vapor,我需要在我试图从中提取数据的服务器上进行身份验证,我当前使用以下方式将其连接到服务器: let urlString = "\(makeUrl(grammar: grammar))&\(query)" let drop = Droplet() return try drop.client.get(urlString) 但我似乎不知道如何在get请求中附加creds。我尝试将用户和密码放入url,但发现vapor客户端不允许: /* Useri

我需要在我试图从中提取数据的服务器上进行身份验证,我当前使用以下方式将其连接到服务器:

    let urlString = "\(makeUrl(grammar: grammar))&\(query)"
    let drop = Droplet()

    return try drop.client.get(urlString)
但我似乎不知道如何在get请求中附加creds。我尝试将用户和密码放入url,但发现vapor客户端不允许:

    /*
      Userinfo (i.e., username and password) are now disallowed in HTTP and       
      HTTPS URIs, because of security issues related to their transmission
      on the wire.  (Section 2.7.1)
    */

与错误状态一样,以明文形式包含用户名/密码凭据作为GET uri参数也是一个巨大的安全风险。你应该(至少)通过电话发信

查看上的博客文章,了解一个使用Vapor设置用户身份验证的相当不错的示例。这个博客现在有点老了(Vapor从那时起已经改变了很多),但我认为它几乎所有的东西都应该仍然有效。至少在概念上

此外,您还可以加入Vapor Slack频道并在其中提问:)

通过Vapor Slack通道的一点轻推和AlamoFire repo中的一点代码潜水,我找到了解决方案

首先需要对用户名和密码进行base64编码,然后将其添加到http头中

func performRequest(query: String, grammar: FMPGrammar) throws -> Response {

    let urlString = "\(makeUrl(grammar: grammar))?\(query)"

    let loginString = "\(userName):\(password)"
    let b64Login = Data(loginString.utf8).base64EncodedString(options: [])

    let drop = Droplet()
    let result = try drop.client.get(urlString, headers: [.authorization : "Basic \(b64Login)"])

    return result

}