0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails Session と cookies

Last updated at Posted at 2021-05-21

2種類のセッション(一時セッションと永続セッション)について

◆一時セッション ← rails tutorial8章
 ・sessionメソッドにより、ユーザーIDを一時cookiesに保存すること(ハッシュとして扱える)
   session[:user_id] = user.id
 ・ブラウザを閉じるorログアウトで一時cookies(session)は破棄される。  

 【流れ】
  IDとPWでログイン
  ↓
  ユーザーIDでDBから検索
  ↓
  PWを検証する
  ↓
  ユーザーが存在してPWも一致していればtrueを返す
  ↓
  ブラウザの一時cookiesにユーザーIDを格納 & ユーザーのプロフィールページにリダイレクト
  ↓
  ブラウザを閉じるorログアウトで一時cookiesを破棄する

◆永続セッション ← rails tutorial9章
 ・cookiesメソッドにより、ユーザーIDと記憶トークンを永続cookiesに保存すること(ハッシュとして扱える)
   cookies.permanent.signed[:user_id] = user.id
   cookies.permanent[:remember_token] = user.remember_token
 ・ブラウザを閉じても永続cookiesは破棄されない
 ・ユーザーがログアウトしたら永続cookiesは破棄される
 ・セキュリティ対策として、user_idは暗号化する
 

 【流れ】
  Remember meのチェックボックスをオンにしてログインする
  ↓
  urlsafe_base64 でランダムな記憶トークンを作成
  ↓
  DBに記憶トークンをハッシュ化(記憶ダイジェスト)して保存
  ↓
  暗号化されたユーザーIDと作成した記憶トークンが永続cookiesに保存される(デフォルトで期限20年) 
  ↓
  ユーザーのプロフィールページにリダイレクト
  ↓
  セッションが切れたとすると、、
  ↓
  永続cookiesからユーザーIDと記憶トークンを取り出し、DBに保存されている記憶ダイジェストと比較
  ↓
  一致してたら、ログインする
  ↓
  ログアウト時は記憶ダイジェストにnilを入れ、永続cookiesのユーザーIDと記憶トークンを削除する

                   

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?