ASP.NET Identity 2.0の新機能 ~パスワードのリセット

CodeZine / 2014年11月21日 14時0分

図7 パスワードリセット完了ページ

 今回は前回前々回で紹介した「アカウントの確認」と対になる「パスワードのリセット」機能について紹介します。パスワードのリセットも「アカウントの確認」と同様に、ASP.NET Identity 2.0で追加されたメールと連携する新機能のうちの一つです。その動作と実装方法について説明していきましょう。

■パスワードのリセットとは

 「パスワードのリセット」とは、ユーザーがパスワードを忘れた際、それをリセットするための専用ページへのリンクをメールで送信する機能です。パスワードのリセットの手順を、図1を使って説明します。

図1 パスワードのリセットの動作イメージ


●1. パスワードリセット要求

 ログイン画面に追加された「パスワードを忘れた場合」リンクから移動できる「パスワードを忘れた場合」ページで、パスワードをリセットしたいユーザーのメールアドレスを入力します。

●2. パスワードリセットメール送信

 パスワードのリセットが本当にそのユーザーによって行われたかどうかを確認するための、「パスワードリセットトークン」を含むリンクをつけたメールを、1.で入力されたメールアドレスに向けて送付します。

●3. パスワードリセットページ表示

 ユーザーは2.で送付されたメールのリンクからパスワードリセットページを表示します。このリンクに付属した「パスワードリセットトークン」を検証し、妥当なものであればパスワードをリセットする画面を表示します。

 なお、パスワードリセットページのURLを直接指定してWebブラウザーで表示しても、パスワードリセットトークンがついていないので、パスワードリセット画面は表示されずエラーになります。

●4. パスワードリセット処理

 ユーザーのメールアドレスと新たなパスワードを入力し、パスワードをリセットします。

 なお、パスワードのリセットは「アカウントの確認」と対になる機能ですので、アカウントの確認なしでパスワードのリセットを行うことはできません。「アカウントの確認」については本連載の前回、前々回の記事を参考にしてください。

ASP.NET Identity 2.0の新機能 ~メール連携機能のためのメール送信処理 (1/3):CodeZineASP.NET Identity 2.0の新機能 ~メールを使ったアカウントの確認 (1/3):CodeZine それでは、パスワードのリセットの実装を行っていきましょう。こちらもアカウントの確認と同じく、テンプレートを活用すれば簡単に実装できます。

■ログインページの変更

 まず、ログインページに、パスワードのリセットを実行するためのページへのリンクを追加します。それには、ログインページのテンプレートでコメントアウトされた、リンクコントロールとそのURLをコメント解除します(リスト1、2)。

リスト1 パスワードリセット実行ページへのリンク追加(Acount\Login.aspxより)
... </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> ...
リスト2 パスワードリセット実行ページへのリンクURL設定(Acount\Login.aspx.csより)
... protected void Page_Load(object sender, EventArgs e) { RegisterHyperLink.NavigateUrl = "Register"; // パスワードの再設定機能についてアカウントの確認を有効にしてから、この設定を有効にしてください ForgotPasswordHyperLink.NavigateUrl = "Forgot"; OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"]; ...


CodeZine

トピックスRSS

ランキング