Senden von POST-requests von der Rails-controller für die Authentifizierung
Ich bin ganz neu mit Ruby und RoR, und habe mit folgendem problem zu kämpfen und komme nicht voran.
Grundsätzlich bin ich ein "proxy" - webservice, der mit bestimmten Anforderungen, übergeben Sie an einen Dritten website. Die Antwort erhielt Sie von der dritt-website ist in HTML, die dann analysiert werden und eine entsprechende XML-Antwort gegeben werden.
Ich bin an einem Punkt, wo ich brauche zu senden POST-Anfragen über mein controller in Rails um einen Benutzer zu authentifizieren, die ich mache, mit diesem code:
require "net/http"
require "uri"
uri = URI.parse("http://myurl.com/members.cgi")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({"email_login" => "[email protected]", "password_login" => "password"})
response = http.request(request)
Mein problem liegt an der Antwort, die ich erhalte. Dieses spezifische POST-Anfrage, wenn erfolgreich (d.h. Benutzer erfolgreich authentifiziert), ist wieder eine 302-Umleitung. Das ist an sich nicht ein Problem, als ich Folgen kann der redirect durch, um die "location" - header-Wert:
redirectLocation = response['location']
Wo ich bin, stecken die mich authentifiziert, wenn der Umleitung zu Folgen, mit der folgenden Zeile:
redirectResponse = Net::HTTP.get_response(URI.parse(redirectLocation))
Dies folgt der Umleitung aber wieder eine Reaktion zeigt, ich bin nicht authentifiziert??
Ich nicht wirklich verstehen, warum dies geschieht. Ich kann sehen, es ist ein Authentifizierungs-cookie zurückgegeben wird, mit meiner ursprünglichen Antwort durch Lesen:
response['cookie']
Endlich also meine Frage ist was muss ich tun, um die server zu erkennen meine-Authentifizierung-status? Übergeben Sie die Cookies mit meinem zweiten Wunsch irgendwie? Wenn ja, wie mache ich es?
Vielen Dank im Voraus für Ihre Zeit!
Rog
InformationsquelleAutor Rog | 2011-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie müssen das cookie. Ich denke, dass es wahrscheinlich geben Sie eine Art session-id. Was Sie brauchen, um passieren mit jeder Anforderung.
Blick auf diese code-snippet für ein Beispiel auf, wie Sie passieren auf einem cookie, das bekommt man als Antwort mit Ihrem neuen Anforderungen.
nur noch einen link zu einem Beispiel. seine leicht genug. seine ruby 😉
Dank heaps für den Hinweis mich in die richtige Richtung.
InformationsquelleAutor thekindofme