开发者

Sending POST requests from Rails controller for authentication

I am quite new to Ruby and RoR, and have been struggling with a problem and am not getting anywhere.

Basically I am building a "proxy" webservice that will handle certain requests, passing them to a third party website. The response received fro开发者_StackOverflow中文版m the third party website is in HTML, which will then be parsed and an appropriate XML response will be given.

I'm at a point where I need to send POST requests via my controller in Rails to authenticate a user, which I'm doing using this 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" => "user@email.com", "password_login" => "password"})
response = http.request(request)

My problem lies on the response I am receiving. This specific POST request, when successful (i.e. user has successfully authenticated), is returning a 302 redirect. That in itself is not an issue, as I can follow the redirect by getting the 'location' header value:

redirectLocation = response['location']

Where I'm getting stuck is in keeping myself authenticated when following the redirect with the following line:

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

This follows the redirect but return a response showing I am not authenticated??

I don't really understanding why this is happening. I can see there is an authentication cookie being returned with my original response by reading:

response['cookie']

So finally my question is what do I need to do to get the server to recognise my authentication status? Pass the cookie with my second request somehow? If so, how do I do it?

Many thanks in advance for your time!

Rog


Yes you need to set the cookie. I think it probably give you some kind of a session id. Which you need to pass with every request.

look at this code snippet for a example on how to pass on a cookie that you get as a response with your new requests.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜