Как отформатировать POST для создания Пользователя с помощью Basic HTTP Auth и Devise Rails Gem - PullRequest
3 голосов
/ 09 февраля 2011

Я новичок, когда дело доходит до этого аутентичного бизнеса. Поэтому я долго искал и не смог найти простых решений:

У меня есть серверная часть Rails, использующая гем Devise для аутентификации пользователя, и интерфейсная часть iPhone. Мне нужно знать, как создать пользователя с iPhone.

У меня есть ресурсы относительно того, как создать асинхронный пост, но мне нужно немного лучше понять общую концепцию HTTP-аутентификации - если бы я, скажем, использовал Curl, чтобы создать пост, который бы создавал пользователя используя обычную HTTP-аутентификацию, какую команду curl я бы отправил на www.example.com/createuser для этого?

Ради примера в качестве атрибутов пользовательской модели моего приложения Rails используются электронная почта и пароль.

Большое спасибо заранее за любые советы / ссылки на ресурсы. Я очень ценю это!

Лучший, Джаред

1 Ответ

7 голосов
/ 15 марта 2011

По сути, это всего лишь вопрос размещения правильных данных в маршруте создания пользователя (запустите rake routes, чтобы увидеть все маршруты, которые разработал для вас, как только вы его правильно установили).Например, я сделал это с одним из моих приложений (с помощью командной строки curl):

curl -H "Content-Type:application/json" -H "Accept:application/json" -d "{\"user\":{\"email\":\"jared@jared.com\", \"password\":\"super_secret_pass\", \"password_confirmation\":\"super_secret_pass\"}}" http://jared-dev/users

.. и я вернулся:

{"status":"signed_in"}

.. и просто подтвердил этоработал:

irb(main):001:0> User.find_by_email('jared@jared.com')
=> #<User id: 2, email: "jared@jared.com", encrypted_password: "$2a$10$QMBAcpKjUwoC.pcRYt88a.vA0oq58jx0lagbgY298wjf...", password_salt: "$2a$10$QMBAcpKjUwoC.pcRYt88a.", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2011-03-15 19:49:47", last_sign_in_at: "2011-03-15 19:49:47", current_sign_in_ip: "127.0.1.1", last_sign_in_ip: "127.0.1.1", authentication_token: "yW37HrKUigwvSEDmXaB4", created_at: "2011-03-15 19:49:47", updated_at: "2011-03-15 19:49:47">

В этом примере я публикую данные JSON, потому что я думаю, что их легче читать, но вы также можете заставить curl выполнять стандартные формданные.Мне пришлось изменить контроллер приложения для поддержки JSON для аутентификации, согласно этой записи .

Эти параметры командной строки соответствуют CURLOPT_HTTPHEADER, CURLOPT_POST и CURLOPT_POSTFIELDS, установленным черезcurl_easy_setopt при использовании простого интерфейса libcurl.

Надеюсь, это поможет.

...