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はサーバーが独自に発行する一意なもの Image from Gyazo
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