パスワードのリセットとは
「パスワードのリセット」とは、ユーザーがパスワードを忘れた際、それをリセットするための専用ページへのリンクをメールで送信する機能です。パスワードのリセットの手順を、図1を使って説明します。
1. パスワードリセット要求
ログイン画面に追加された「パスワードを忘れた場合」リンクから移動できる「パスワードを忘れた場合」ページで、パスワードをリセットしたいユーザーのメールアドレスを入力します。
2. パスワードリセットメール送信
パスワードのリセットが本当にそのユーザーによって行われたかどうかを確認するための、「パスワードリセットトークン」を含むリンクをつけたメールを、1.で入力されたメールアドレスに向けて送付します。
3. パスワードリセットページ表示
ユーザーは2.で送付されたメールのリンクからパスワードリセットページを表示します。このリンクに付属した「パスワードリセットトークン」を検証し、妥当なものであればパスワードをリセットする画面を表示します。
なお、パスワードリセットページのURLを直接指定してWebブラウザーで表示しても、パスワードリセットトークンがついていないので、パスワードリセット画面は表示されずエラーになります。
4. パスワードリセット処理
ユーザーのメールアドレスと新たなパスワードを入力し、パスワードをリセットします。
なお、パスワードのリセットは「アカウントの確認」と対になる機能ですので、アカウントの確認なしでパスワードのリセットを行うことはできません。「アカウントの確認」については本連載の前回、前々回の記事を参考にしてください。
- ASP.NET Identity 2.0の新機能 ~メール連携機能のためのメール送信処理 (1/3):CodeZine
- ASP.NET Identity 2.0の新機能 ~メールを使ったアカウントの確認 (1/3):CodeZine
それでは、パスワードのリセットの実装を行っていきましょう。こちらもアカウントの確認と同じく、テンプレートを活用すれば簡単に実装できます。
ログインページの変更
まず、ログインページに、パスワードのリセットを実行するためのページへのリンクを追加します。それには、ログインページのテンプレートでコメントアウトされた、リンクコントロールとそのURLをコメント解除します(リスト1、2)。
... </div> <p> <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">新規ユーザーとして登録する</asp:HyperLink> </p> <p> <%-- パスワードの再設定機能についてアカウントの確認を有効にしてから、この設定を有効にしてください --%> <asp:HyperLink runat="server" ID="ForgotPasswordHyperLink" ViewStateMode="Disabled">パスワードを忘れた場合</asp:HyperLink> </p> </section> </div> ...
... protected void Page_Load(object sender, EventArgs e) { RegisterHyperLink.NavigateUrl = "Register"; // パスワードの再設定機能についてアカウントの確認を有効にしてから、この設定を有効にしてください ForgotPasswordHyperLink.NavigateUrl = "Forgot"; OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"]; ...