前回、『deviseのインストール手順をシンプルなログイン機能の実装で理解する』でdeviseを利用した認証機能の実装方法について紹介しました。
deviseでは、サインイン・サインアウト後のリダイレクトURL(遷移先の画面)はデフォルトでルートページ(/
)です。しかし、「ログイン後はマイページにリダイレクトさせたい」といった要件もあるでしょう。
そこで今回はdeviseのリダイレクトURLの変更方法について紹介します。
今回実装する内容について
今回はサインイン後にマイページ(/my
)へリダイレクトするように修正をします。
サインイン後の画面作成
サインイン後に遷移するマイページの作成を行います。
ルーティングの追加
単数形リソース(resource
)のルーティングを追加します。
config/routes.rb
resource :my, only: %i(show)
コントローラの作成
コントローラを作成します。
$ rails g controller Mies show
deviseのヘルパーメソッドであるauthenticate_user!
をbefore_action
に設定し、認証ユーザーのみアクセスできるようにします。
mies_controller.rb
class MiesController < ApplicationController
+ before_action :authenticate_user!
def show
end
end
リダイレクトURLの変更
リダイレクトURLはdeviseのヘルパーメソッドをオーバーライドすることで変更できます。
サインイン後のパスはafter_sign_in_path_for、サインアウト後のパスはafter_sign_out_path_forで定義されています。
今回はサインイン後にマイページへリダイレクトさせたいため、以下のようにコントローラを編集します。
application_controller.rb
class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
mies_show_path
end
end
動作確認
サインイン後、マイページに遷移すればOKです。
さいごに
Twitter(@nishina555)やってます。フォローしてもらえるとうれしいです!