サーチ…


前書き

DeviseはRailsの認証ソリューションです。さらに進める前に、APIに関する簡単なメモを追加したいと思います。したがって、APIはセッションを処理しません(ステートレスです)。これは、要求後に応答を提供し、それ以上の注意を必要としないことを意味します。つまり、サーバーに要求するたびにシステムが動作するために、すべてのAPIで認証の詳細を渡し、Deviseに認証の詳細を保存しないように指示する必要があります。

入門

そこで、まず、レールプロジェクトとセットアップデバイスを作成します

レールアプリケーションを作成する

rails new devise_example

今すぐ宝石リストに追加する

railsプロジェクトのルートにある 'Gemfile'というファイルを見つけることができます

次にbundle install実行します

次に、ジェネレータを実行する必要があります。

rails generate devise:install

コンソール上では、それに続く指示はほとんどありません。

開発モデルを生成する

rails generate devise MODEL

次に、 rake db:migrate実行しますrake db:migrate

詳細はDevise Gemをご覧ください。


認証トークン

認証トークンは、固有のトークンを持つユーザーを認証するために使用されます。まず、ロジックを進める前に、 auth_tokenフィールドをDeviseモデルに追加する必要があります

したがって、

rails g migration add_authentication_token_to_users

class AddAuthenticationTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :auth_token, :string, default: ""
    add_index :users, :auth_token, unique: true
  end
end

次に、 rake db:migrate実行しますrake db:migrate

auth_tokenを使って認証を行うようにauth_token

app/controllers/application_controllers.rb

最初にこの行に

respond_to :html, :json 

これは、レールアプリケーションがhtmlとjsonの両方で応答するのに役立ちます

その後、

protect_from_forgery with: :null

これを変更します:null私たちはセッションを扱っていないので、 :nullです。

ここで、application_controllerに認証メソッドを追加します

したがって、デフォルトでは、Deviseは電子メールを独自のフィールドとして使用し、カスタムフィールドも使用できます。この場合、user_emailとauth_tokenを使用して認証されます。

  before_filter do
    user_email = params[:user_email].presence
    user       = user_email && User.find_by_email(user_email)

    if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
      sign_in user, store: false
    end
  end

注:上記のコードは純粋にあなたのロジックに基づいています。私は実際の例を説明しようとしています。

上記のコードの6行目では、 store: falseを設定していることがわかりますstore: falseこれは各リクエストでセッションを作成できないようにするため、



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow