Railsチュートリアル 第12章 メモ書き
○パスワードの再設定
基本的に11章のパスワード有効化と同じ
Forget passwordリンク→フォームにメアド
→再設定用のリンク付きメールが届く
→再設定の確認フォーム
・再設定の手順
1)キーはフォームに入力されたメアド
2)メアドがデータベースにあれば再設定用トークンとダイジェストを生成
3)ダイジェストはデータベースに保存、トークンはメアドと一緒に有効化リンクに含める
4)ユーザーがリンクをクリックすれば、メアドをキーとして探し、データベース内のダイジェストと比較
5)認証成功時にパスワード変更用のフォームを表示
・Password resetsをRESTfullに使う
→edit、new、action、updateが、ActiveRecord オブジェクトではないため、自前でルーティングやアクションを書いていく。
・セキュリティ的な問題から次の2点が必要
1)トークンのハッシュ化
2)再設定のリンク期限を短くする
→データベースにreset_digestと
reset_sent_at属性の追加
・キーにメアドを使うため
f.hidden_field :email, @user.email
でページ内に保存
・パスワード更新(update):
必要な項目は次の4つ
1)再設定の有効期限が切れていないか
2)無効なパスワードであれば失敗させ、その理由を示す
3)新しいパスワードが空文字列になっていないか
4)新しいパスワードが正しければ更新
・reset_sent_at < 2.hours.ago:
パスワード再設定メールの送信時刻が、現在時刻より2時間以上前(早い)の場合を示す。“<”は少ないではなく、早いと解釈する