【85日目】【1日20分のRailsチュートリアル】【第8章】記憶トークンとユーザーIDをcookiesに保存する
今日は「8.4.2 ログイン状態の保持」から。
8.4.2 ログイン状態の保持
個別のcookiesは、ひとつのvalue (値) と、オプションのexpires (有効期限) からできています。
valueには記憶トークンの値を設定すればいいらしい。
また、cookiesの有効期限を20年後に設定するのははよく使われる手法とのこと。
Railsには20年後に期限切れになるcookiesを設定できるpermanent
メソッドがあるそう。へ~。
cookies.permanent[:remember_token] = remember_token
次はユーザーIDをcookiesに保存。
sessionメソッドを同じ感じにすると下記の通り。
cookies[:user_id] = user.id
しかしこのままではIDが生のテキストとしてcookiesに保存されてしまうので、アプリケーションのcookiesの形式が見え見えになってしまい、(中略)
これを避けるために、署名付きcookieを使用します。
署名付きcookieにはsigned
メソッドを使う。
cookies.signed[:user_id] = user.id
これにさっきの有効期限20年cookiesを設定できるpermanent
メソッドを追加するとこうなる。
cookies.permanent.signed[:user_id] = user.id
cookiesを設定すると、以後のページのビューで以下のようにしてcookiesからユーザーを取り出せるようになります。
User.find_by(id: cookies.signed[:user_id])
ふーむ、cookies.signed[:user_id]
でユーザーIDのcookiesの暗号が解除されるらしい。
記憶トークンとユーザーIDをcookiesに保存する方法を学習した。
色々読み込んでたら時間かかったので今日はここまで。
今日の作業時間は【20分】。
次は「8.4.2 ログイン状態の保持」のトークンが記憶ダイジェストと一致するか確認するところから。