devise_token_authとは
新規登録、ログイン、ログアウトなどの機能を実装する時に、
使用し、トークン認証という、ユーザー認証
ができるgemです。
この記事ではdevise_token_authの設定を説明していきます。
Gemfileの設定
まずはGemfileの設定からです。
下のgemをGemfileに追記します。
gem "devise"
gem "devise_token_auth"
gem 'rack-cors' #URLのアクセスが重複することを許可してくれる。
その後bundle install
をします。
インストール
下のコマンドでインストールします。
rails g devise:install
でdeviseをインストールします。
rails g devise_token_auth:install User auth
devise_token_authをインストールします。
authは認証
のことです。
認証機能を実装
環境設定は終わったので、認証機能を実装をします。
まずは認証コントローラーを実装します。
rails g controller api/v1/registrations
すると、api/v1/auth/registrations_controller.rb
が作成されます。
classの部分を以下のように修正します。
class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
end
ルーティング設定
api/v1/authでコントローラーを作ったので、ルーティングは下のようになります。
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
registrations: 'api/v1/auth/registrations'
}
end
end
end
⚫︎補足
namespace
はapi/v1の名前空間を作る時に使います。Rails.application.routes.draw do
mount_devise_token_auth_for 'User', at: 'auth'
とは
サインインやサインアウトなどの認証ができるようにするためのルーティングです。
api/v1/registration_controller.rbをmount_devise_token_auth_for 'User', at: 'auth'で
認証するためという意味のコードです。
devise_token_auth.rbの設定
initializerの中にdevise_token_auth.rbというファイルがありますが、
ここを公式ドキュメントを参照して必要なコードをコメントアウトしていきます。
https://devise-token-auth.gitbook.io/devise-token-auth/config/initialization
DeviseTokenAuth.setup do |config|
#リクエストごとに、headersの情報を変える。
config.change_headers_on_each_request = false #trueからfalseに変更
#リクエストごとにheadersが変わるのはかなり面倒。
#ユーザーは2週間後に再認証する必要があり、
#トークンが発行された後、トークンが有効であり続ける期間が2週間とする
config.token_lifespan = 2.weeks
# headersに含まれている名前を下のように変える
config.headers_names = { 'access-token': "access-token",
client: "client",
expiry: "expiry",
uid: "uid",
'token-type': "token-type" }
end
現場で頭が真っ白にならないために
現場に入ったら頭が真っ白になるのは未経験や経験が浅いエンジニアあるあるです。
僕もそうでした。
そのための対策としてCRUD処理と認証機能を自力で作るのがいいです。
大半のウェブアプリはこの2つの延長にあるのが多いです。
最後に
この辺を実装するとログイン機能は作れましたが、
状況によって実装内容が変わることがあるのでコピペだけにはならないようにお願いします。
あくまで参考資料としてみてください。