deviseのベースになっているwardenを調べる
前回の投稿の続きです。
deviseにはwardenがベースになっており、
"current_user"や"user_signed_in?"を定義するうえでも、
wardenを用いていることを学びました。
このwardenとは?を調べてみたので、備忘録として残しておきます。
調べていると、この方がまとめているdeviseとwardenの関係性についてが、
とてもわかりやすかったので、参考にしています。
wardenがユーザー認証するメカニズム部分を担っており、
そのメカニズムをrailsに実装する役割をdeviseが補っています。
ここで前回のコード部分に戻ります。
def current_#{mapping} @current_#{mapping} ||= warden.authenticate(scope: :#{mapping}) end
current_(モデル名)に自己代入されている記述ですが、
wardenのauthenticateメソッドが呼び出されています。
wardenのauthenticateの処理の詳細です。
warden.authenticateで行われている処理としては、以下になります。
こちらの記事を参考にしています。
つまり、wardenのauthenticateメソッドが呼び出され、認証が成功した場合は success!(user) のようにsuccess!メソッドに対して認証が成功したら、
その認証が成功したuserを返している、ということです。
そこで返された値がcurrent_userに代入され、
コントローラーやviewでcurrent_userが使用できるようになっていました。
ここまで読んでいただき、ありがとうございました!
是非、コメント欄でご意見いただけると嬉しいです!
この記事が気に入ったらサポートをしてみませんか?