2017-03-23 3 views
0

ich auf dem Server auth müssen, dass ich versuche, um Daten aus Im Moment habe ich es mit der Verbindung zum Server:Vapor-Client mit Authentifizierung

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

    return try drop.client.get(urlString) 

Aber ich kann nicht scheinen, um herauszufinden, wie Credits an die Anfrage erhalten. Ich habe gerade versucht, den Benutzer und das Passwort in die URL setzen gefunden, aber der Dampf-Client erlaubt es nicht, dass:

/* 
     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) 
    */ 

Antwort

0

Mit etwas Schub aus dem Dampf Slack-Kanal und ein wenig Code Tauchen im AlamoFire Repo ich die Lösung gefunden zu haben.

Zuerst müssen Sie den Benutzernamen und das Kennwort base64 verschlüsseln und dann zum HTTP-Header hinzufügen.

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 

} 
0

Wie die Fehlerzustände, es ist ein enormes Sicherheitsrisiko Benutzername/Passwort, im Klartext enthält als GET URI-Parameter. Sie sollten (zumindest) sie in einem POST-Anruf senden.

Schauen Sie sich den Blogbeitrag unter User Authentication with Vapor an, um ein ziemlich anständiges Beispiel für die Einrichtung der Benutzerauthentifizierung mit Vapor zu sehen. Der Blog ist jetzt ein wenig alt (Vapor hat sich seither sehr verändert), aber ich denke, dass so ziemlich alles darin funktionieren sollte. Zumindest konzeptionell.

Auch verbinden Sie den Dampf Slack Kanal und Fragen dort in :) qutheory.slack.com