記事の対象者
誰のために記事を作成するのか?⇨rails tutorialを学習中の初学者.
どんな内容の記事か?⇨ログインの仕組みから実際にログイン機能を実装するまでの流れ.
記事の作成者→プログラミング学習歴8ヶ月程度の初心者.
目次
①基本的なログインの仕組み.
②ログイン機能実装手順
基本的なログインの仕組み
ブラウザー(サファリやgoogle chromeなど)にユーザーを特定できる情報(メールアドレスやパスワード)を保存する.
それらの情報を保存する場所をcookieという. つまりブラウザーのcookieという場所にユーザーを特定できる情報を保存する.
そのブラウザーのクッキーの中のユーザーに関する情報とサーバーのsessionという場所に保存されているユーザー情報があっているか検証して.
あっている場合⇨ログインする.
あっていない場合⇨ログインしてとブラウザーにレスポンスを返す.
ログイン機能実装手順.
①ブラウザーとwebサーバー両方の中にcookieの中の情報(個人を特定できる情報)を入れる=sessionメソッドを使う.
②
①log_in(user)メソッドの作成し該当するコントローラーのcreateアクション内に記載する app/helper/sessions_helper.rbの中に
def log_in(user) session[:user_id] = user.id end end
と記載する。なぜhelper/sessions_helper.rbにlog_inメソッドを定義するかというとコントローラーの中でこのlog_inメソッドを何度も使用できるようにするため.
メソッドの中にメソッドを入れるの可読性を上げるため.
session[:user_id] = user.id
と
def log_in(user) session[:user_id] = user.id end end
この2つはどちらも同じ意味だが下のlog_in(user)の方を使う。理由は使用する際に何をするのかパッと見わかりやすい.
def create session[:user_id] = user.id /×何をしているのかパッと見わかりにくい log_in(user) /○あっログインしようとしているなとパッと見わかりやすいため end
session[:user_id] = user.id
↑のsessionメソッドで何が行われるのか?.
cookieを作成しその中にユーザー情報を保存しブラウザーの中に保存するのとwebサーバー側の中にもそのcookie情報を保存する.
仕上げにこのsessionメソッドをsessionコントローラーのcreateアクションの中でlog_inメソッドを呼び出すとログインできるようになる.