Отправка POST-запросов от контроллера Rails для аутентификации - PullRequest
1 голос
/ 29 апреля 2011

Я довольно новичок в Ruby и RoR, борюсь с проблемой и никуда не денусь.

По сути, я создаю веб-сервис "прокси", который будет обрабатывать определенные запросы, передавая ихсторонний сайт.Ответ, полученный от стороннего веб-сайта, представлен в формате HTML, который затем будет проанализирован, и будет дан соответствующий XML-ответ.

Я нахожусь в точке, когда мне нужно отправлять запросы POST через мой контроллер в Railsаутентифицировать пользователя, что я делаю, используя этот код:

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)

Моя проблема заключается в ответе, который я получаю.Этот конкретный POST-запрос при успешном выполнении (то есть при успешной аутентификации пользователя) возвращает перенаправление 302.Само по себе это не проблема, так как я могу следить за перенаправлением, получая значение заголовка 'location':

redirectLocation = response['location']

То, что я застреваю, заключается в том, чтобы сохранять аутентификацию при выполнении перенаправления со следующимистрока:

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

Это следует за перенаправлением, но возвращает ответ, показывающий, что я не аутентифицирован ??

Я действительно не понимаю, почему это происходит.Я вижу, что файл cookie для аутентификации возвращается с моим исходным ответом:

response['cookie']

Итак, наконец, мой вопрос: что мне нужно сделать, чтобы сервер распознал мой статус аутентификации?Передать куки с моим вторым запросом как-нибудь?Если да, то как мне это сделать?

Большое спасибо заранее за ваше время!

Рог

1 Ответ

1 голос
/ 29 апреля 2011

Да, вам нужно установить куки. Я думаю, что это, вероятно, даст вам какой-то идентификатор сессии. Который нужно передавать при каждом запросе.

посмотрите на этот фрагмент кода для примера того, как передать cookie, который вы получаете в ответ на ваши новые запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...