勉強履歴(と雑記)

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

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時間以上前(早い)の場合を示す。“<”は少ないではなく、早いと解釈する