2011-04-29 82 views
1

我對Ruby和RoR相當陌生,並且一直在努力解決問題,並且沒有到任何地方。從Rails控制器發送POST請求進行身份驗證

基本上,我正在構建一個「代理」web服務,它將處理某些請求,並將它們傳遞給第三方網站。從第三方網站收到的回覆是HTML格式,然後將被解析並提供適當的XML響應。

我在一個點,我需要通過我的Rails的控制器發送POST請求給用戶,這是我正在使用此代碼做驗證:

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) 

我的問題在於對響應我我正在接受。這個特定的POST請求在成功時(即,用戶已經成功驗證)正在返回302重定向。這本身不是一個問題,因爲我可以通過獲取「位置」報頭值跟隨重定向:

redirectLocation = response['location'] 

當我陷入是保持在與下面的行重定向時自己驗證:

redirectResponse = Net::HTTP.get_response(URI.parse(redirectLocation)) 

這是繼重定向,但回報顯示我未通過認證的響應?

我真的不明白爲什麼會發生這種情況。我可以看到有通過讀取返回一個驗證cookie與我原來的迴應:

response['cookie'] 

所以最後我的問題是什麼,我需要做的就是服務器識別我的認證狀態?以某種方式通過我的第二個請求cookie?如果是這樣,我該怎麼做?

非常感謝您的時間!

Rog

回答

1

是的,你需要設置cookie。我想這可能會給你一些會話ID。你需要通過每一個請求。

this代碼片段爲例如如何傳遞一個cookie,作爲您的新請求的迴應。

+0

謝謝,但我該怎麼做? – Rog 2011-04-29 06:34:57

+0

只是添加了一個例子的鏈接。它很容易。它的紅寶石;) – thekindofme 2011-04-29 06:35:51

+0

感謝堆指向我在正確的方向。 – Rog 2011-04-29 07:57:45

相關問題