~パスワードリセット~にコメントこんにちは。社会人一年目のkesuikeです。相も変わらずtutorialを進めております。大学も卒業したので、近々学生の間にやったほうがいいことをまとめてブログにUPしようと思います。12章の要約を載せていきたいと思います。僕はここはすごい嫌いですが、ここを乗り越えれば楽しい楽しい投稿やいいねなどのよりTwitterっぽい実装に入れるので頑張ります。パスワードリセットの大まかな手順1.ユーザーがパスワード再設定をリクエストすると送られてきたメールアドレスからユーザーを特定する。2.再設定用のトークンとリセットダイジェストを作成する3.リセットダイジェストはDBに保存し、トークンはユーザーに送るメールのリンクに仕込む4.ユーザーがリンクをクリックしたら、メールアドレスをキーにユーザーを探し、リセットダイジェストと比較。5.認証されたら再設定用のフォームを表示するこの流れで実装していきたいと思います。最初にPassword_resetのモデリングからやります。今回はパスワードを設定するためのモデルが必要なのでnew,editの2つのアクションを作成します。--no-test-framework次にルーティングの設定も行います。:update]これで名前付きルートも使えるようになります。ログインフォームにパスワードを忘れた時用のリンクを作ります。%>これでパスワード再設定画面へのリンクの作成が完了しました。次にメールアドレス有効化の時と同じようにトークンとダイジェストの設定を行います。今回はダイジェストだけでなくメールを送信した時間を記憶するreset_sent_atも追加します。リンクへのアクセスには時間制限を設けたいからです。カラムの追加のコマンドは何回も紹介しているので割愛します。実際にメールアドレスを入力するフォームを作成します。</div></div>ここから受けっとたメールアドレスからユーザーを探し出します。ちなみに、、、気づいた方もいると思いますがこのフォーム、ログインフォームとかなり似ていますよね。後々リファクタリングをした方が良さそうです。フォームから受け取ったメールアドレスからユーザーを探すのですが、これはcreateアクションの出番ですね。endendUserが見つけ出せたら2つのメソッドを実行してroot_urlにリダイレクトするって感じですね。次にその2つのメソッドを定義しましょう。UserMailer.password_reset(self).deliver_nowend1つ目のメソッドはトークンを作成して、それをダイジェストにしたものと、メールを送信した時間を保存しています。次にメールの設定ですが、ここもアカウントの有効化と酷似しているので割愛させていただきます。〜アカウントの有効化〜続いてリンクをクリックして再設定用のフォームを表示させます。パスワードの登録のみですのでフォームを作るのは比較的簡単だと思います。今回メールアドレスをキーにしてユーザーを探し出しているためupdateアクションでもメールアドレスが必要になります。そのため、hidden_field_tagというヘルパーを新たに使います。</div></div>これでupdateアクションでもメールアドレスが利用できます。このフォームを描画と言いたいところですが、その前に有効化や認証を実装しなければいけません。これらはeditアクションの前、つまりbefore_actionで実装します。endendこれらを通過した人のみ、パスワードを変更できます。パスワードの更新の際には以下の項目をチェックします。1.パスワード再設定の期限2.無効なパスワードなら保存しない3.空になっていないか4.正しければ更新する以上の項目を気をつけ実装します。2.hours.agoend以上でパスワード再設定の解説はおしまいです。最後まで見ていただきありがとうございました。~Micropost実装~コメントを残すコメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。WordPress.。