Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

ASP.NET Identity入門 第7回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/11/21 14:00

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

目次

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

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

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

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

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

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

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

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

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

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

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

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

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

 それでは、パスワードのリセットの実装を行っていきましょう。こちらもアカウントの確認と同じく、テンプレートを活用すれば簡単に実装できます。

ログインページの変更

 まず、ログインページに、パスワードのリセットを実行するためのページへのリンクを追加します。それには、ログインページのテンプレートでコメントアウトされた、リンクコントロールとその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"];
...

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 高野 将(タカノ ショウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:ASP.NET Identity入門

もっと読む

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5