17

私は、メール、パスワードなどを持つ単純なUserモデルでDeviseを認証用に使用するRails 3.1アプリケーションを持っています。私はiPhoneアプリケーションから認証できる必要があります。この機能を公開するにはどうすればよいですか?私の選択肢が何であるか分かりませんので、広範な回答が大丈夫です。iOSアプリケーションにRails/Devise認証を公開する

+0

すべてのdeviseコントローラがjsonとxmlに応答し、RESTインターフェイスを可能にします。 – zsquare

+2

正直言って、まったく同じ問題があります。私はRESTを理解しており、APIはうまく機能しています。しかし、私はiOSデバイスからログインの概念を理解することはできません。 (私はフレームワークとしてRestKitを使用しています。誰かがiOSをレールアプリで認証してから、継続的にRESTコールを呼び出して情報を取得するために必要な手順を実行してください。セッションをどのように保存しますか?あなたはできる?これまでの呼び出しでユーザーの資格情報を渡す必要がありますか?何らかのトークンを使用できますか?どのように情報を取得するためにコールをフォーマットしますか?助けも私にとって素晴らしいだろう! –

+0

@Wayfarerまさに。私は、Webサービスが何らかの種類のトークンをデバイスに渡す必要があると思っています。それは、デバイスがどの通信でも自分自身を識別するために使用できる認証済みではありますが、実際のところどのように動作するのかわかりません。明らかに、Userモデルは、認証後に共有される各ユーザーのための何らかの一意のトークンを格納することができますが、私はそれを提供する仕組みが不明です。 – Undistraction

答えて

11

最も速い方法は、http_authenticatableを有効にして、HTTP基本認証でユーザー名とパスワードを渡すことです。これが最も簡単な方法ですが、ユーザーのパスワードをプレーンテキストで保存し、要求ごとにパスワードを送信する必要があることを意味します。

より良いオプションは、トークン認証です。パラメータまたはHTTP Basic Auth(パスワードを「X」に設定し、トークンをユーザ名に設定できます)に渡すことができます。これの利点は、ユーザー名/パスワードを最初に使用してトークンを取得し、それを以後の認証に使用できることです。

最低限のコードでトークン認証を行う最も簡単な方法は、DeviseでHTTP認証を有効にし、ユーザーがログインすることを要求する新しいコントローラーをセットアップし、その結果としてreset_authentication_tokenの結果を出力することです。トークンを取得したら、それを今後のHTTP認証要求に渡してログに記録します。

+0

http_authenticatableを有効にして、ウェブサイトからログインしようとすると恐ろしいユーザー名/パスワードフィールドをドロップダウンしますか?私はまだウェブサイトを介して、クリーンなインターフェイスを介してログインするユーザーが必要です。 –

+0

@ Zachary Ankerあなたの答えをありがとう。この権利を理解していることを確認できますか?デバイスはhttp://somesite.com/users/sign_inにアクセスし、POSTリクエストのフォームパラメータとしてユーザー名とパスワードを渡します。 Railsはこれらの詳細をチェックし、正しければトークンを返します。デバイスは、そのトークンを格納し、将来の通信でそれを使用する。それで、レールはどこからトークンを取得しますか?各ユーザーに固有のトークンを生成しますか?トークンは期限切れですか? – Undistraction

+0

@Wayfarerそうすべきではありません。 HTMLなどのナビゲーション形式であれば、HTTP認証ダイアログをポップアップしてはいけません。それを表示したくない場合は、認証トークンを返すコントローラで自分でパスワードチェックを実装することもできます。 –

関連する問題