ume

ログイン機能の仕組みの復習

記事の対象者

誰のために記事を作成するのか?⇨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メソッドを呼び出すとログインできるようになる.