1 (サーバー)ログインページを返す
2 (クライアント)メールアドレスやパスワードの入力
3 (サーバー)送られてきた情報を元にユーザーを探してきてセッションにその情報を格納する。
session_controller.rb
def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) #入力されたメールアドレスを持つユーザーがデータベースに存在し、かつ入力されたパスワードがそのユーザーのパスワードである場合のみ、if文がtrueになる。 log_in user redirect_to user end
sessions_helper.rb
#渡されたユーザーでログインする def log_in(user) session[:user_id] = user.id end
このようなセッション情報がサーバー側で生成される。セッションIDはサーバーが独自に発行する一意なもの
4(サーバー)セッションID0001をCookieに保存せよと指示。
5(クライアント)ログイン後のページに遷移すると共にセッションID00001をCookieに保存する。
6(クライアント)ブックマークするリクエストを投げる。この時Cookieに保存されている00001も一緒にサーバーに送る。
7(サーバー)送られてきたセッションID00001を元にセッション情報を検索しに行く。00001に該当する1行を発見!ユーザーIDは1だ!
sessions_helper.rb
def current_user User.find_by(id: session[:user_id]) end