Rails Tutorial 第9章を噛み砕く
【学ぶこと】 ・Cookiesを利用したログイン情報を維持するための機能
前章ではSessionを利用したログイン情報を維持する機能を学んだ。
本章ではCookiesを利用したログイン維持の機能を学ぶ。
Session = ブラウザを閉じるとログイン情報が消滅
Cookies = ブラウザを閉じてもログイン情報を保持
流れ
1.カラムの追加
rails generate migration add_remember_digest_to_users remember_digest:string
rails db:migrate
→
remember digestカラムを追加する
2.User Model Classへのメソッドの追加
new_tokenメソッド
def User.new_token
→SecureRandomモジュールのurlsafe_base64メソッドでトークンを作成
rememberメソッド
def remember
→remember_tokenオブジェクトにnew_tokenでトークンを作成し、update_attributeでremember_digestを更新??
authenticatedメソッド
def authenticated?(remember_token)
→remember tokenとremember digestを比較する
3.コントローラ用のヘルパーの追加(sessions_helper)
def remember(user)
→CookiesメソッドでユーザIDとremember tokenを永続保存できるようにする
def current_user →session情報だけでなくCookies情報の有無も確認できるように変更する
4.ユーザを忘れる機能の追加
(model)
def forget
→remember_digest属性をnilにする
(session helper)
def forget(user)
→cookie情報を削除する
def logout →forgetメソッドを使ってcurrent userの情報を削除する
5.微調整(バグの修正) def destroy log_out if logged_in? →loginしている時にのみ、logoutを実行する(loginしていなければlogout実行しない)
def authenticated? return false if remember_digest.nil? →remember_digestがnilの場合は、比較しない
6.rememberチェックボックスの追加
(view)
form_forメソッドのcheckboxの追加
bootstrapで装飾
(sessions_controller)
create
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
→
Checkboxの値に応じてrememberメソッドか、forgetメソッドを実行する
以上