SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET Identity入門

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

ASP.NET Identity入門 第7回

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

 今回は前回、前々回で紹介した「アカウントの確認」と対になる「パスワードのリセット」機能について紹介します。パスワードのリセットも「アカウントの確認」と同様に、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"];
...

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
パスワードのリセット要求ページの変更

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ASP.NET Identity入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

<個人紹介>新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C# 2017対応』(日経BP社、2017)など。<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8254 2014/11/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング