初学者が知った「ざっくり学んだログインの仕組み。SessionやCookieについて」
こんにちは。
Railsでアプリ開発を始めたばかりの初学者です。
最近やっと「ログインってどう動いてるのだろうか」という仕組みを少しずつ理解してきたので、
自分用のメモもかねて、記載しました。
そもそも「ログイン」って何だろか?
ユーザーが「自分はこの人です」とサーバーに伝えて、
サーバーが「あ、あなたですね!OK」と認めること。
ログイン処理って実際どうなってるのか
1. フォームに入力する
例えば
- メールアドレス:test@example.com
- パスワード:password123
2. サーバー側でユーザーを探す
user = User.find_by(email: params[:email])
3. パスワードが一致するか確認
user.valid_password?(params[:password])
- パスワードはハッシュ化される(元に戻せない)
CookieとSessionのざっくり理解
Cookie(クッキー)とは?
ブラウザに保存される小さなデータである
- サーバーが「この人の情報を記録」とブラウザに渡す
- 次回以降、ブラウザが自動でそのメモ(クッキー)を送ってくれる
CookieとSessionの関係
- サーバーがユーザーを認証したら、セッションに情報を保存
- そのセッションIDを暗号化してクッキーに保存
- 次のアクセスでクッキーを見て、「この人はログイン中のあの人だ」と判断できる
クッキーが残っている限りは、ログイン状態も続く
以下の場合は
- クッキーが消えるとログアウトされる
- 有効期限が切れてもログアウトされる
- サーバー側がセッションを破棄してもログアウトされる
パスワードをそのまま保存しない理由
もしそのまま保存してたら、データベースが盗まれたとき大惨事になるため
学び
- ログインは「名乗る → 確認される → 認められる」
- Cookieはブラウザのメモ帳、Sessionはサーバーのメモ帳という感じ
- パスワードは絶対にそのまま保存しないこと
- クッキーがあるから、ログイン状態が維持される
まだまだ勉強中ですが、ざっくり理解したことをまとめました。
間違ってたらすみません。