勉強履歴(と雑記)

プログラミング初心者のメモ書きです

Railsチュートリアル 第9章 メモ書き

○発展的なログイン(Remember me)

 任意でユーザーのログイン情報を記録しておき、ブラウザ再起動後にすぐ

 ログインできる機能。

 →永続cookieを使う

 

トークン:

コンピュータが作成・管理する秘密情報。パスワードはユーザーが作成・管理する。

セッションの永続化には記憶トークンが使われる。

 

・セッション永続化の流れ:

1)記憶トークンにランダムな文字列を生成。

2)cookiesに有効期限付のトークンを保存。

3)トークンをハッシュ化してデータベースに保存(remember_digestカラム)。

4)ブラウザのcookiesに保存するユーザーIDも暗号化。

5)IDを受け取ったらデータベースを検索し、記憶トークンのcookiesが

  データベース内のハッシュ値と一致することを確認する。

 

トークンに使う文字列:

SecureRandom.urlsafe_base64はA–Z、a–z、0–9、"-"、"_"のいずれか

の文字(64種類)からなる長さ22のランダムな文字列を返す。

 

・ユーザーの暗号化済みIDと記憶トークンをブラウザの永続cookiesに保存して、永続セッション(20年間)を作成。

cookies[:remember_token] = { value:   remember_token,

                         expires: 20.years.from_now.utc }

=> cookies.permanent[:remember_token] = remember_token

 

三項演算子

params[:session][:remember_me] == '1' ? remember(user) : forget(user)

→paramハッシュの値が1であればremember (user)を実行、1でなければforget(user)を実行(if-then)