2016-06-22 12 views
0

私のレールアプリケーションは、ユーザーログイン/認証のためのDevise gemです。私は操作のためのデータを取得するためにWebサービス呼び出しを使用する必要があります。フロントエンドのログインを使わなくても、これをどうやって行うことができますか? 私は、Webサービスの呼び出しRails Devise gem - >ユーザーログインなしでWebサービス呼び出しを認証

溶液 - を認証するいくつかの方法が必要です> 私は別のオプションは、認証トークンと呼ばれるものが含まれるように使用することを考案、 https://github.com/baschtl/devise-token_authenticatable

答えて

0

前ですが、 https://github.com/gonzalo-bulnes/simple_token_authentication

を使用して終了それは完全に安全でなく、削除されました。削除されたコードとより良い代替案は、献銀のチームメンバーの1人によってgistに公開され、後に他の人によって宝石に書き込まれました。devise-token_authenticatable

簡単に言えば、ユーザーに認証トークンを格納し、各要求で電子メールとトークンの両方を照合して一致するかどうかを確認しますが、安全に比較します。このリクエストでは、セッションにユーザーを保存しないのが一般的です。

+0

おかげで、Leitoに役立ちます願っています。私はあなたが言及した宝石をチェックしています。しかし、それはデータベースを移行するようではありません。 – KavitaC

+0

authentication_tokenという文字列をusersテーブルに追加するだけです。それだけで必要なすべての移行です。例えば、彼らの仕様のアプリでそれをどのように参照してください:https://github.com/baschtl/devise-token_authenticatable/blob/d02b9754db13552b3ad55283330ebf343b788763/spec/support/rails_app/db/migrate/20100401102949_create_tables.rb#L36 – Leito

+0

Leito、私は追加しました2つの新しい列をUserテーブルに追加しましたが、これ以上エラーは発生しません。しかし、https/httpコールは何をするのですか?私は例を見ません。何かのように - > https:// mysite?[email protected]&authentication_token=werewr – KavitaC

0

独自のセッション作成メソッドを作成し、deviseに付属のものを上書きすることができます。まず、ルーターの内側に、あなたは、あなたがあなた自身のコントローラでこれを実装し、工夫を継承することができます

devise_for :users, controllers: {sessions: "sessions"} 

を考案カスタマイズします:: SessionsController

class SessionsController < Devise::SessionsController 

    def new 
    super 
    end 

    def create 
    self.resource = AuthService.perform(auth_options) # do the custom check here with your service call 
    sign_in(resource_name, resource) #this will set the devise session and login the user 
    respond_with resource, :location => after_sign_in_path_for(resource) 
    end 

end 

あなた自身のカスタムロジックを持っているに道を譲るべきだとセッションを作成します。また、githubの実装を見て:

https://github.com/plataformatec/devise/blob/master/app/controllers/devise/sessions_controller.rb

は、それが

関連する問題