0
0

More than 3 years have passed since last update.

Railsチュートリアル 第12章 パスワードの再設定 - 前提

Posted at

何をしていくか

「パスワードを忘れた」というユーザーのために、「パスワードの再設定」という操作ができるようにします。

「パスワードの再設定」とは

パスワードをダイジェストとしてRDBに保存している場合、ハッシュ関数の性質上、パスワードそのものを通知することはできません。そのため、「再設定」という操作が必要になります。大まかな手順は以下です。

  1. パスワードを再設定するユーザーは、新たなパスワードをフォームに入力し、アプリケーションに送信する
  2. アプリケーションは、1.で設定されたパスワードを元に新たにハッシュ値を生成する
  3. 2.で生成したハッシュ値を、当該ユーザーの新たなパスワードダイジェストとしてRDBに保存する

ユーザーの真正性を確認する方法

「第11章 アカウントの有効化」と同様の手順となります。

  1. ユーザーは、パスワード再設定用リンクを受け取るためのメールアドレスをアプリケーションに送信する
  2. アプリケーションは、パスワード再設定用のトークンとダイジェストの組を生成する
  3. アプリケーションは、2.で生成されたパスワード再設定用ダイジェストをRDBに保存する
  4. アプリケーションは、2.で生成されたパスワード再設定用トークンを含むURLを生成する
  5. アプリケーションは、4.で生成されたURLを含むメールを作成し、1.で指定されたメールアドレスに送信する
  6. ユーザーは、5.で送信されたメールに記載されたURLをクリックする
  7. アプリケーションは、6.でクリックされたURL(トークン)と2.でRDBに保存されたダイジェストを比較し、ユーザーの真正性を確認する
  8. アプリケーションは、ユーザーにパスワード再設定用フォームを返す

「第11章 アカウントの有効化」との類似点と相違点

類似点

今回実装する「パスワードの再設定」と、第11章で実装した「ユーザーの有効化」には、以下のような類似点があります。

  • トークンとダイジェストの組を生成する
  • トークンを含むURLを生成する
  • ユーザーの登録メールアドレスにメールを送信する
  • トークンを含むURLへのGETリクエストをトリガーとして認証を行う

相違点

一方で、以下のような相違点もあります。

  • パスワードの再設定を実装する際には、既存のビューの変更を伴う
  • ビューを2つ新たに実装する必要がある
    • パスワード再設定用メールを受け取るメールアドレスの入力フォーム
    • 再設定するパスワードそのものの入力フォーム

モックアップ

上述「相違点」でビュー3つが登場しました。Railsチュートリアル本文においては、当該ビューのレイアウトについて、以下のモックアップが提示されています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0