RailsでAPIを作ります。通常の認証ではdeviseを使用しますが、APIでは認証のためにdeviseを実装する方法を示します。
gem 'devise_token_auth'
誰かがこの宝石を認証に好むが、そのために利用できるチュートリアルはありません。 Rails apiで認証を実装する方法は?
devise_token_authを使用したAPI認証 に関する優れたチュートリアルを以下に示します。また、 devise_token_auth gemのgithubページ には、始めるのに役立つ非常に優れたドキュメントがあるようです。
関連する概念を理解するための優れたチュートリアルを探している場合は、トークンベースの認証を使用してRails APIを作成する完全なウォークスルーがある here is one を使用してください(_devise_token_auth
_、しかし概念を理解するのに役立ちます)。
また、大規模なRails APIで非常にうまく機能する JWT(JSON Web Token) もご覧になることをお勧めします。これは、ビルド方法を説明する別のチュートリアルです JWTでバックアップされたRails API
あなたができる最善のことは、最新である可能性が最も高い github tutorials に従うことです。
最初に [〜#〜] tldr [〜#〜] の部分に従う必要があります。
フロントエンドの開発者は 使用法の仕様 について知っておく必要があることに注意してください。
最後に、ドキュメントを確認します。役立つサンプルを以下に示します。
ルート
Rails.application.routes.draw do
# Stuff
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
devise_for :users
root to: "home#index"
# The API part
namespace :api, defaults: {format: :json} do
scope :v1 do
mount_devise_token_auth_for 'User', at: 'auth', skip: [:omniauth_callbacks]
resources :stuff, only: [:index, :show]
end
end
end
コントローラ:
module Api
class StuffsController < ApiController
before_action :authenticate_user!
...
end
end
APIコントローラ
class ApiController < ApplicationController
include DeviseTokenAuth::Concerns::SetUserByToken
end
ユーザーモデル
class User < ActiveRecord::Base
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
end
最後に、対応するイニシャライザでgemを構成することを忘れないでください。
"authentication_token"属性をテーブルに追加して、このgemを使用できます。
https://github.com/robertomiranda/has_secure_token
application_controller:
def authenticate_user!
authenticate_user_from_token!
super
end
def authenticate_user_from_token!
User.find_by_authentication_token(user_token)
end
def user_token
request.headers['X-AUTH-TOKEN'].presence || params['auth_token'].presence
end
現在のプロジェクトでは simple_token_authentication を実装しています。実装と使用も非常に簡単です。
以下をGemfileに追加してbundle install
を実行してください
gem 'simple_token_authentication', '1.12.0'
残りのステップはすべてそのドキュメントに記載されており、非常に簡単に従うこともできます。