あっぴ~logs

まだ見ぬ世界へ

本日のRailsTutorial 3 9章

第9章 発展的なログイン機構

最近のウェブサービスでは、(任意で) ユーザーのログイン情報を記憶しておき、ブラウザを再起動した後でもすぐにログインできる機能 (remember me) を備えていることも一般的になってきました。

 

そこで本章では、永続クッキー (permanent cookies) を使ってこの機能を実現していきます。具体的には、まずユーザーのログイン情報を長く記憶する方法 (例えばBitbucketやGitHubが使っている方法) について学びます。その後、[remember me] チェックボックスを使って、ユーザーの任意でログイン情報を記憶する方法について学びます (例えばTwitterFacebookも使っていますね)。

 
9.1 Remenber me 機能

実装の方針はこのよう

  1. 記憶トークンにはランダムな文字列を生成して用いる。
  2. ブラウザのcookiesにトークンを保存するときには、有効期限を設定する。
  3. トークンはハッシュ値に変換してからデータベースに保存する。
  4. ブラウザのcookiesに保存するユーザーIDは暗号化しておく。
  5. 永続ユーザーIDを含むcookiesを受け取ったら、そのIDでデータベースを検索し、記憶トークンのcookiesがデータベース内のハッシュ値と一致することを確認する。

 

9.2 [Remember me] チェックボックス

ログインを保存するためのチェックボックス作成

 

9.3 [Remember me]のテスト

チェックボックスのテスト

よくわかんなかった、、

 

9.4 最後に

デプロイ

マージ

heroku マイグレーション

メンテナンスモード使った

 

まとめ!
  • Railsでは、あるページから別のページに移動するときに状態を保持することができる。ページの状態を長期間保持したいときは、cookiesメソッドを使って永続的なセッションにする
  • 記憶トークンと記憶ダイジェストをユーザーごとに関連付けて、永続的セッションが実現できる
  • cookiesメソッドを使うと、ユーザーのブラウザにcookiesなどを保存できる
  • ログイン状態は、セッションもしくはクッキーの状態に基づいて決定される
  • セッションとクッキーをそれぞれ削除すると、ユーザーのログアウトが実現できる
  • 三項演算子を使用すると、単純なif-then文をコンパクトに記述できる

 

感想

今回は二回ほど読み返して少し理解できたかなってところ、演習までは手が回らなかったのでまたいつかやれれば、、

理解度60%!