LoginSignup
0
0

devise_token_authの設定について

Posted at

deviseとは

deviseは、Railsで簡単にログインやサインアップなどの認証機能を実装することができるgemの事です。

devise_token_authとは

devise_token_authとは、トークン認証機能を実装することができるgemです。
例えば、ユーザーがログインした時にサーバー側でトークンが生成されてそれを、Headerに含めてユーザー側にレスポンスすることができます。

devise_token_authの導入

まずは、必要なgemをGemfileに書いていきます。

Gemfile
+ gem 'devise'
+ gem 'devise_token_auth'

次に、gemをインストールします。

bundle install

インストールが完了したら、devise用のファイルを以下のコマンドで作成します。

rails g devise:install
rails g devise_token_auth:install User auth

上記のコマンドによりmigrationファイルの他、複数のファイルが作成、変更が行われました。特に変更はないので、マイグレーションしたいと思います。

rails db:migrate

上記のコマンドにより、rails/db/schema.rbusersテーブルが作成されたと思います。

devise_token_authの設定

まずは、作成されたconfig/initializers/devise_token_auth.rbにdevise_token_authの設定をしていきます。

以下のコードをコメントアウトしてください。

config/initializers/devise_token_auth.rb
DeviseTokenAuth.setup do |config|

  # リクエストごとにトークンを更新するか
  # 毎回更新されないようにするため、falseにします。
  config.change_headers_on_each_request = false

  # トークンの有効期間
  # 2週間の有効期限です(変更可能)
  config.token_lifespan = 2.weeks

  # ヘッダーの名前を定義
  config.headers_names = {:'access-token' => 'access-token',
                          :'client' => 'client',
                          :'expiry' => 'expiry',
                          :'uid' => 'uid',
                          :'token-type' => 'token-type' }
end

ルーティングの設定

authディレクトリの中にあるregistrationsコントローラーでログインとサインアップ機能を行えるようにします。

config/routes.rb
Rails.application.routes.draw do
    mount_devise_token_auth_for 'User', at: 'auth', controllers: {
    #authディレクトリにあるregistrationsコントローラーに設定
      registrations: 'auth/registrations'
    }
end

上記により、設定が完了しました。

コントローラーの設定

最初にコントローラーを作成します。

rails g controller auth/registrations

app/controllers/auth/registrations_controller.rbという形で作成されていると思います。

次に、コントローラーの設定をします。

app/controllers/auth/registrations_controller.rb
class Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController

    private

    def sign_up_params
      #name,email,password,password_confirmationのみをキーとして許可する
      params.permit(:name, :email, :password, :password_confirmation)
    end
end

以上でコントローラーの設定が完了しました。

次は、CORSの設定にいきます。

CORSの設定

CORSとは

CORSとは、異なるオリジン間でのリソース共有を可能にするセキュリティ
の仕組みのことです。
つまり、クライアント側がサーバーサイドのデータにアクセスする時の制限や許可を管理したりします。

CORSの導入

rack-corsというgemをインストールします。

Gemfile
+ gem 'rack-cors'

gemをインストールします。

bundle install

インストールが完了したら、config/initializers/cors.rbというファイルがあると思いますので、編集していきます。

config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    # origins 'example.com'の部分を'*'に変更
    # '*' ですべてのHTTPリクエストを許可する設定
    origins '*'

    resource '*',
      headers: :any,

      # exposeの行を追加することで、ブラウザからアクセスできるヘッダー情報を指定します
      expose: ['access-token', 'expiry', 'token-type', 'uid', 'client'],
      # どのHTTPリクエストメソッドを許可するか指定
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end

上記の部分をコメントアウトして、変更を加えれば設定完了です。

oroginsの設定について
例えばクライアント側のホスト名がlocalhost:8000の場合は、originsの箇所にorigins 'localhost:8000'と入れてください。

devise_token_auth設定は、以上となります。


参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0