本日のRailsTutorial 3 9章
第9章 発展的なログイン機構
最近のウェブサービスでは、(任意で) ユーザーのログイン情報を記憶しておき、ブラウザを再起動した後でもすぐにログインできる機能 (remember me) を備えていることも一般的になってきました。
そこで本章では、永続クッキー (permanent cookies) を使ってこの機能を実現していきます。具体的には、まずユーザーのログイン情報を長く記憶する方法 (例えばBitbucketやGitHubが使っている方法) について学びます。その後、[remember me] チェックボックスを使って、ユーザーの任意でログイン情報を記憶する方法について学びます (例えばTwitterやFacebookも使っていますね)。
9.1 Remenber me 機能
実装の方針はこのよう
- 記憶トークンにはランダムな文字列を生成して用いる。
- ブラウザのcookiesにトークンを保存するときには、有効期限を設定する。
- トークンはハッシュ値に変換してからデータベースに保存する。
- ブラウザのcookiesに保存するユーザーIDは暗号化しておく。
- 永続ユーザーIDを含むcookiesを受け取ったら、そのIDでデータベースを検索し、記憶トークンのcookiesがデータベース内のハッシュ値と一致することを確認する。
9.2 [Remember me] チェックボックス
ログインを保存するためのチェックボックス作成
9.3 [Remember me]のテスト
チェックボックスのテスト
よくわかんなかった、、
9.4 最後に
デプロイ
マージ
heroku マイグレーション
メンテナンスモード使った
まとめ!
- Railsでは、あるページから別のページに移動するときに状態を保持することができる。ページの状態を長期間保持したいときは、
cookies
メソッドを使って永続的なセッションにする - 記憶トークンと記憶ダイジェストをユーザーごとに関連付けて、永続的セッションが実現できる
cookies
メソッドを使うと、ユーザーのブラウザにcookiesなどを保存できる- ログイン状態は、セッションもしくはクッキーの状態に基づいて決定される
- セッションとクッキーをそれぞれ削除すると、ユーザーのログアウトが実現できる
- 三項演算子を使用すると、単純なif-then文をコンパクトに記述できる
感想
今回は二回ほど読み返して少し理解できたかなってところ、演習までは手が回らなかったのでまたいつかやれれば、、
理解度60%!