チュートリアル : メンバシップとユーザー ログインを使用する Web サイトの作成
更新 : 2007 年 11 月
Web サイトには、特定のページへのアクセスを一部のメンバまたはその他の認証されたユーザーだけに限定するという要件が指定されることがよくあります。その場合は、アプリケーションでユーザーにユーザー名とパスワードの入力を求める必要があります。また、匿名ユーザー (ログインしていないユーザー) に情報を表示しない方法をアプリケーションに組み込む必要もあります。このチュートリアルでは、ASP.NET コントロールおよび ASP.NET メンバシップ サービスを使用して、これらすべてのタスクを実行するアプリケーションを作成する方法を示します。詳細については、「メンバシップの概要」を参照してください。
このチュートリアルでは、以下のタスクを行います。
ASP.NET メンバシップ サービスを組み込むこと、およびユーザーを定義する方法をアプリケーションで構成します。
ログイン コントロールを使用してユーザーの資格情報を取得し、ログインしているユーザーに情報を表示します。
アプリケーションの 1 つ以上のページを保護し、ログインしているユーザーだけが、保護されたページを表示できるようにします。
新規ユーザーがサイトで登録できるようにします。
メンバにパスワードの変更とリセットを許可します。
前提条件
このチュートリアルを実行するための要件は次のとおりです。
Microsoft Visual Web Developer
Microsoft Internet Information Services (IIS) がローカル コンピュータにインストールされていること。
使用するコンピュータにローカルにインストールされた SQL Server Express Edition
MDAC (Microsoft Data Access Components ) Version 2.7 以降。Microsoft Windows XP または Windows Server 2003 を使用している場合、MDAC 2.7 は既に存在します。ただし、Microsoft Windows 2000 を使用している場合は、コンピュータに既にインストールされている MDAC のアップグレードが必要になる場合があります。詳細については、MSDN ライブラリの「Microsoft Data Access Components (MDAC) Installation」を参照してください。
電子メール メッセージを転送できる電子メール サーバーへのアクセス。サーバーはメッセージを受信できなくてもかまいません。IIS には、このチュートリアルに適したメール サーバーである既定の SMTP 仮想サーバーが含まれています。このサーバーの構成方法の詳細については、「方法 : IIS 6.0 内で SMTP 仮想サーバーをインストールおよび構成する」を参照してください。ローカル エリア ネットワークで作業している場合は、電子メール サーバーへのアクセスに関してネットワーク管理者に確認してください。
Web サイトの作成
(「チュートリアル : Visual Web Developer での基本的な Web ページの作成」のトピックの手順を実行するなどして) Microsoft Visual Studio で Web サイトを既に作成している場合は、その Web サイトを使用できるので、このチュートリアルの「メンバシップの構成」に進んでください。それ以外の場合は、次の手順に従って、新しい Web サイトおよびページを作成します。
ローカル IIS Web サイトを作成するには
Visual Studio を開きます。
[ファイル] メニューの [新しい Web サイト] をクリックします。
[新しい Web サイト] ダイアログ ボックスが表示されます。
[Visual Studio にインストールされたテンプレート] の [ASP.NET Web サイト] をクリックします。
[場所] ボックスの一覧の [HTTP] をクリックします。[参照] をクリックします。
[場所の選択] ダイアログ ボックスが表示されます。
[ローカル IIS] をクリックします。
[ローカル Web サーバー] を開きます。
[既定の Web サイト] をクリックします。
Web サイトの一覧の上にある [新しい Web アプリケーションの作成] アイコン () をクリックし、新しい Web サイトに membership という名前を付けます。
[開く] をクリックします。
[場所の選択] ダイアログ ボックスが閉じます。
[言語] ボックスで、作業に使用するプログラミング言語をクリックします。
選択したプログラミング言語は Web サイトでの既定として設定されます。ただし、プログラミング言語をページごとに設定することもできます。
[新しい Web サイト] ダイアログ ボックスの [OK] をクリックします。
Visual Web Developer により Web サイトが作成され、Default.aspx という名前の新しいページが作成されます。
メンバシップの構成
このチュートリアルの後半で、保護されたサブディレクトリにページを格納します。ここでそのサブディレクトリを作成し、チュートリアルの後半でこのサブディレクトリに対するセキュリティを構成できるようにします。
Web サイトに新しいフォルダを追加するには
ソリューション エクスプローラで、Web サイトの名前を右クリックし、[新しいフォルダ] をクリックします。
このフォルダに MemberPages という名前を付けます。
ASP.NET メンバシップを操作する前に、アプリケーションでメンバシップを有効にし、ユーザーを設定できるように構成する必要があります。Web サイト管理ツールでは、ウィザードに似たインターフェイスを使用して構成設定を変更できます。セットアップ ウィザードの操作を完了すると、ASPNETDB.MDF という名前の SQL Server データベースがプロジェクトの App_Data フォルダに作成されます。
このチュートリアルでは、単一のユーザーを定義します。
メンバシップ ユーザーを作成するには
[Web サイト] メニューの [ASP.NET 構成] をクリックします。
[セキュリティ] タブをクリックしてから [手順に従ってセキュリティを構成するには、セキュリティ設定ウィザードを使用してください。] へのリンクをクリックし、[次へ] をクリックします。
ウィザードの手順 2 に進み、[インターネットから] をクリックします。
このウィザードには、Web サイトで使用する認証方法を選択できるページが表示されます。このオプションでは、アプリケーションでフォーム認証を使用するように指定します。この場合、ユーザーは、このチュートリアルで後ほど作成するログイン ページを使用してアプリケーションにログインします。
[次へ] をクリックします。
[プロバイダの詳細設定] を使用してユーザー情報を格納することを示すメッセージが表示されます。既定では、メンバシップ情報は Web サイトの App_Data フォルダ内の Microsoft SQL Server Express データベース ファイルに格納されます。
[次へ] をクリックします。
ロールを作成するためのオプションが表示されます。この手順はチュートリアルの後半で別途実行します。したがって、[この Web サイトにロールを有効化します。] チェック ボックスをオンにしないでください。
[次へ] をクリックします。
新規ユーザーを作成するためのページが表示されます。
アプリケーションのユーザーを定義する情報を入力します。次の値をガイドラインとして使用します (任意の値を使用できますが、このチュートリアルの後半で使用できるようにエントリをメモしてください)。
[ユーザー名] ユーザー名 (スペースなし) またはサンプル名。
[パスワード] パスワード。厳密なパスワード (大文字と小文字の英字および区切り記号を含む 8 文字以上のパスワード) を指定する必要があります。
[電子メール] 個人用電子メール アドレス。このチュートリアルの後半で、自分自身宛てに電子メール メッセージを送信するので、有効な電子メール アドレスを指定する必要があります。
[セキュリティの質問] および [セキュリティ返答] 後でパスワードを回復する必要がある場合に使用する質問と解答を入力します。
[ユーザーの作成] をクリックします。
確認ページが表示されます。
メモ : Web サイト管理ツールを開いたままにしておきます。
このチュートリアルの前の手順で MemberPages という名前のフォルダを作成しました。ここでは、ログインしているユーザーだけがこのフォルダ内のページにアクセスできるようにする規則を作成します。
MemberPages サブディレクトリに関するアクセス規則を設定するには
ウィザードの [次へ] をクリックします。
アクセス規則を作成するためのページが表示されます。
[新しいアクセス規則の追加] ボックスで、Web サイトのノードを展開します。
先ほど作成した [MemberPages] フォルダをクリックします。
[適用する規則] の下の [匿名ユーザー] をクリックします。
[アクセス許可] の下の [拒否] をクリックします。
作成中の規則では、匿名ユーザー (ログインしていないユーザー) のアクセスは拒否されます。
[この規則の追加] をクリックします。
新しい規則が下のグリッドに表示されます。ユーザーが [MemberPages] サブディレクトリのページを要求すると、この規則が確認され、そのユーザーがそのページにアクセスできるかどうかが判断されます。
[完了] をクリックします。
ウィザードの操作が終了しました。ウィザードが閉じて、Web サイト管理ツールの [セキュリティ] タブが再び表示されます。
アプリケーションで電子メールを送信できるようにするための構成
ここでは、アプリケーションで電子メール メッセージを送信できる必要があります。メッセージを送信するには、アプリケーションが SMTP (Simple Mail Transport Protocol) サーバーにアクセスできる必要があります。アプリケーションからの電子メール メッセージは、SMTP サーバーを介して電子メール受信者に転送されます。
IIS には、オプションのコンポーネントとして、このチュートリアルでの使用に適した既定の SMTP 仮想サーバーが含まれています。このサーバーの構成方法の詳細については、「方法 : IIS 6.0 内で SMTP 仮想サーバーをインストールおよび構成する」を参照してください。ローカル エリア ネットワークで作業している場合は、電子メール サーバーへのアクセスに関してネットワーク管理者に確認してください。
SMTP サーバーへのアクセス方法を設定または確認した後で、SMTP サーバーに電子メール メッセージをルーティングするようにアプリケーションを構成する必要があります。これを行うには、アプリケーションの実行方法を決定する一連の設定が定義されている、Web サイトの Web.config ファイルにエントリを追加します。
特定の SMTP サーバーを使用するようアプリケーションを構成するには
Web サイト管理ツールの [アプリケーション] タブをクリックします。
[SMTP 設定] の下の [SMTP 電子メール設定の構成] をクリックします。
電子メールを構成するためのページが表示されます。
コンピュータ上にある SMTP 仮想サーバーを使用する場合は、[サーバー名] に「localhost」と入力します。それ以外の場合は、該当するサーバー名を入力します。
SMTP サーバーの要求に従い、ポート番号および認証の情報を入力します。これらの設定値の構成方法の詳細については、管理者に確認してください。
[送信元] ボックスに有効な電子メール アドレスを入力します。
[上書き保存] をクリックし、確認ページで [OK] をクリックします。
Web.config ファイルがまだ存在しない場合は、指定した設定値を使用してこのファイルが作成されます。
メモ : Web.config ファイルは、ビューを更新するまではソリューション エクスプローラに表示されません。
Web サイト管理ツールを閉じます。
ユーザーのログイン
アプリケーションの一部として、ユーザーの種類に基づいて情報を表示または非表示にするなどの処理をアプリケーションで実行できるようにユーザーの ID を設定する必要があります。ユーザーの ID を取得するために、ユーザーをログインさせます。
ここでは、ユーザーをログイン ページに導くリンクをホーム ページに追加し、ログイン ページを作成します。
ログイン ボタンのあるホーム ページを作成するには
サイトの Default.aspx ページを開くか、このページに切り替えます。Default.aspx ページがない場合は、このページを追加するか、別のページを使用できます。
デザイン ビューに切り替えます。
「Welcome to our site」などの静的テキストを入力し、[書式設定] ツール バーの [フォーマットのブロック] ボックスの一覧を使用して、入力したテキストを見出し 1 として書式指定します。
ツールボックスの [ログイン] グループから、LoginStatus コントロールをページにドラッグします。
既定では、LoginStatus コントロールはリンクとして表示されます。ユーザーがこれをクリックすると、ログイン ページが表示されます。ここでログイン ページを作成できます。
ログイン ページを作成するには
ソリューション エクスプローラで、Web アプリケーションを右クリックし、[新しい項目の追加] をクリックします。サイトに Login.aspx という名前の Web フォームを追加します。
メモ : このチュートリアルでは、このページに Login.aspx という名前を付けます。既定では、フォーム認証はこの名前のページで機能するように構成されます。Web.config ファイルで既定のログイン ページ (ユーザーがリダイレクトされるページ) を変更できますが、このチュートリアルでは変更しません。
Login.aspx ページでデザイン ビューに切り替えます。
ツールボックスの [ログイン] グループから、Login コントロールをページにドラッグします。
Login コントロールは、ユーザーに資格情報の入力を求め、この情報を検証する単一のコントロールです。
ログイン エラーの表示
Login コントロールには、ユーザーが正しい情報を入力するのを助けるための検証が組み込まれています。たとえば、ユーザーがパスワードを入力しなかった場合、検証コントロールによって、[パスワード] ボックスの横にアスタリスク (*) が表示されます。ページに ValidationSummary コントロールを追加することによって、より詳しいログイン エラー情報を表示できます。
詳細なログイン エラーを表示するには
ツールボックスの [検証] グループから、ValidationSummary コントロールをページにドラッグします。
ValidationSummary コントロールの [プロパティ] ウィンドウで、ValidationGroup プロパティを、先ほど追加した Login コントロールの既定の ID である Login1 に設定します。
ログインしているユーザー用の情報を表示するには
ホーム ページを変更して、ユーザーがログインしているかどうかによって、表示をカスタマイズします。匿名ユーザーには、ログインを勧める汎用メッセージが表示されます。ログインしているユーザーには、ログイン名を使用したメッセージが表示されます。
ログインしているユーザー用の表示をカスタマイズするには
Default.aspx ページに切り替えるか開きます。
ツールボックスの [ログイン] グループから、LoginView コントロールをページにドラッグします。
LoginView コントロールが表示され、AnonymousTemplate テンプレートが開きます。このテンプレートを使用して、ユーザーがログインする前に表示される内容を定義します。
LoginView コントロールの編集領域をクリックし、編集をアクティブにします。
LoginView コントロールの AnonymousTemplate テンプレートの編集領域に「You are not logged in. Click the Login link to sign in.」と入力します。
[LoginView タスク] パネルで、[ビュー] ボックスの [LoggedInTemplate] をクリックします。[LoginView タスク] パネルが表示されない場合は、LoginView コントロールの見出しを右クリックし、[スマート タグの表示] をクリックします。
次に、既にログインしているユーザーに表示される内容を定義します。
LoginView コントロールの編集領域をクリックして編集をアクティブにし、「You are logged in. Welcome,」と入力します。
ツールボックスの [ログイン] グループから、LoginName コントロールをテンプレートのテキストの後にドラッグします。
ログインのテスト
ここでアプリケーションのログイン機能をテストできます。
ログインをテストするには
ソリューション エクスプローラで、[Default.aspx] を右クリックし、[スタート ページに設定] をクリックします。
これにより、Web サイトを実行したときに最初に Default.aspx ページが表示されるように構成されます。
Ctrl キーを押しながら F5 キーを押して Web サイトを実行します。
ブラウザにホーム ページ (Default.aspx) が表示され、[ログイン] リンクおよび汎用メッセージが示されます。
[ログイン] リンクをクリックします。
作成したログイン ページが表示されます。
このチュートリアルの前の手順で作成したユーザーのログイン名を入力し、[ログイン] をクリックします。パスワードはまだ入力しないでください。
[パスワード] ボックスの横にアスタリスク (*) が表示され、ValidationSummary コントロールにエラー メッセージが表示されます。
ユーザー名とパスワードの両方を入力し、[ログイン] をクリックします。
正しい資格情報を入力した場合は、ホーム ページに戻ります。今回は、ページに [ログアウト] リンク、ユーザー名、およびログインしているユーザー用に定義したウェルカム メッセージが表示されます。
ブラウザを閉じます。
メンバ専用ページへのアクセスの制限
多くの Web サイトで行う一般的なタスクの 1 つは、ログインしているユーザーのみにページが表示されるようにページを構成することです。このチュートリアルの前半で、MemberPages サブディレクトリを作成し、このサブディレクトリ内のページへのアクセスを制限する規則を作成しました。ここでは、この保護されたサブディレクトリにページを追加し、アクセス規則をテストします。
メンバ専用ページを作成するには
ソリューション エクスプローラで [MemberPages] フォルダを右クリックし、[新しい項目の追加] をクリックし、Members.aspx という名前の新しい Web フォームを追加します。
メモ : このページは必ず [MemberPages] フォルダ内に作成してください。
デザイン ビューで、ページに「Welcome, members!」などのテキストを追加します。ブラウザでこのページを表示したときにページを認識できるテキストであれば、どのようなテキストでもかまいません。
ここでホーム ページからメンバ専用ページへのリンクを追加できます。実際のアプリケーションでは、多くの場合、LoginView コントロールのログイン テンプレートにメンバ専用ページへのリンクを配置します。この場合、ログインするまでサイトの訪問者にはこのリンクが表示されません。ただし、このチュートリアルでは、最初にログインしないでメンバ専用ページを表示しようとしたときの効果を確認できるように、すべてのユーザーにこのリンクが表示されるようにします。
メンバ専用ページへのリンクを追加するには
Default.aspx ページに切り替えるか開きます。
ツールボックスの [標準] グループから、HyperLink コントロールをページにドラッグします。
HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Members page に設定し、href プロパティを ~/MemberPages/Members.aspx に設定します。
メンバ専用ページのテスト
匿名ユーザーとログインしているユーザーの両方としてメンバ専用ページにアクセスすることで、このページをテストできます。
メンバ専用ページをテストするには
Ctrl キーを押しながら F5 キーを押して Web サイトを実行します。
ブラウザに Default.aspx ページが表示されたら、ログインせずに、[Members page] リンクをクリックします。
匿名ユーザーの場合はメンバ ページへのアクセスが拒否されるので、Login.aspx ページにリダイレクトされます。
ログイン ページで、前の手順でログインに使用したユーザー名とパスワードを入力します。
ログインに使用したユーザー名がページへのアクセスを承認されているので、Members.aspx ページにリダイレクトされます。
ブラウザ ウィンドウを閉じます。
新規ユーザーの作成
このチュートリアルの前半で、Web サイト管理ツールを使用してユーザーを作成しました。小規模なチームのユーザーを作成する場合など、定義済みの小規模なユーザー リストを使用する場合は、この方法が便利です。しかし、多くの Web サイトでは、ユーザーが自分で登録することが許可されています。ASP.NET には、前の手順で Web サイト管理ツールを使用して実行したのと同じタスクを実行する CreateUserWizard コントロールが用意されています。
ここでは、ユーザーが Web サイトに登録できるようにする機能を追加します。最初に、登録ページを作成します。
登録ページを作成するには
ソリューション エクスプローラで Web サイトの名前を右クリックし、[新しい項目の追加] をクリックし、Register.aspx という名前の新しい Web フォームを追加します。
メモ : このページは、MemberPages フォルダ内ではなく、Web サイトのルートに作成してください。
Register.aspx ページで、デザイン ビューに切り替え、「Register」などの静的テキストをページに入力します。[書式設定] ツール バーの [フォーマットのブロック] ボックスの一覧を使用して、テキストを見出し 1 として書式指定します。
ツールボックスの [ログイン] グループから、CreateUserWizard コントロールをページにドラッグします。
CreateUserWizard コントロールの [プロパティ] ウィンドウで、ContinueDestinationPageUrl プロパティを ~/Default.aspx に設定します。
これにより、ユーザーの作成後にユーザーが [続行] をクリックするとホーム ページに戻るようにコントロールが構成されます。
ツールボックスの [標準] グループから、HyperLink コントロールをページにドラッグします。HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Home に設定し、href プロパティを ~/Default.aspx に設定します。
ここで登録ページを表示するリンクをホーム ページに追加できます。このチュートリアルでは、ログインしていないユーザーに対してだけ登録リンクを表示すると想定しています。
ホーム ページに登録リンクを作成するには
Default.aspx ページに切り替えるか開きます。
前の手順で追加した LoginView コントロールを右クリックし、[スマート タグの表示] をクリックします。[LoginView タスク] パネルで、[ビュー] ボックスの [AnonymousTemplate] をクリックし、匿名テンプレートで編集をアクティブにします。
ツールボックスの [標準] グループから、HyperLink コントロールを匿名テンプレートにドラッグします。HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Register に設定し、href プロパティを Register.aspx に設定します。ログインしていないユーザーに対してのみ、[Register] リンクが表示されます。
ここで登録プロセスをテストできます。
登録をテストするには
Ctrl キーを押しながら F5 キーを押すことにより Web サイトを実行して、Default.aspx ページを表示します。
ログインしていないので、[Register] リンクを含むページが表示されます。
[Register] リンクをクリックします。
登録ページが表示されます。
テキスト ボックスに新しいユーザー名、厳密なパスワード、電子メール アドレス、およびセキュリティ上の質問と解答を入力します。この 5 つの情報すべてを入力する必要があります。
[ユーザーの作成] をクリックします。
確認メッセージが表示されます。
[続行] をクリックします。
ログインしているユーザーとして、ホーム ページが再び表示されます。[ログイン] リンクが [ログアウト] に変更されています。Login コントロールに表示されるのは、LoggedInTemplate プロパティからの情報であり、AnonymousTemplate プロパティからの情報ではありません。
[ログアウト] リンクをクリックします。
ページが変更され、匿名ユーザー用の情報が表示されます。
[ログイン] リンクをクリックします。
先ほど作成したユーザーの資格情報を入力します。
新規ユーザーとしてログインされます。
ブラウザ ウィンドウを閉じます。
パスワードの変更
時にはユーザーがパスワードを変更することがありますが、多くの場合、このタスクを手動で行うのは実用的ではありません。したがって、別の ASP.NET コントロールを使用して、ユーザーが自分でパスワードを変更できるように構成できます。パスワードを変更するには、ユーザーは自身の既存のパスワードを知っている必要があります。
ここでは、ログインしているユーザーが自分のパスワードを変更できるページを追加します。
パスワード変更ページを作成するには
ソリューション エクスプローラで [MemberPages] フォルダを右クリックし、[新しい項目の追加] をクリックし、ChangePassword.aspx という名前の新しい Web フォームを追加します。
メモ : このページは必ず [MemberPages] フォルダ内に作成してください。
ログインしているユーザーのみが自身のパスワードを変更できるように、このページはメンバ専用フォルダに格納します。
ChangePassword.aspx ページで、デザイン ビューに切り替え、「Change Password」などの静的テキストを入力します。[書式設定] ツール バーの [フォーマットのブロック] ボックスの一覧を使用して、テキストを見出し 1 として書式指定します。
ツールボックスの [ログイン] グループから、ChangePassword コントロールをページにドラッグします。
ChangePassword コントロールの [プロパティ] ウィンドウで、ContinueDestinationPageUrl プロパティを ~/Default.aspx に設定します。
これにより、パスワードの変更後にユーザーが [続行] をクリックするとホーム ページに戻るようにコントロールが構成されます。
ここでパスワード変更ページを表示するリンクをホーム ページに追加できます。ログインしているユーザーのみにこのリンクが表示されるようにします。
ホーム ページにパスワード変更リンクを作成するには
Default.aspx ページに切り替えるか開きます。
LoginView コントロールを右クリックし、[スマート タグの表示] をクリックします。[LoginView タスク] メニューの [ビュー] ボックスの [LoggedInTemplate] をクリックします。
これにより、LoginView コントロールが編集モードに切り替わり、ログインしているユーザーに表示される内容を編集できるようになります。
ツールボックスの [標準] グループから、HyperLink コントロールを編集領域にドラッグします。HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Change password に設定し、href プロパティを ~/MemberPages/ChangePassword.aspx に設定します。
ログインしているユーザーにのみ、[パスワードの変更] リンクが表示されます。これは、前の手順で作成した [Register] リンクとは逆の動作です。
ここでパスワード変更プロセスをテストできます。
パスワード変更をテストするには
Ctrl キーを押しながら F5 キーを押して Web サイトを実行します。
Default.aspx ページで、[ログイン] リンクをクリックし、作成したユーザーのいずれかとしてログインします。
これが終わると、ログインしているユーザーとして、ホーム ページが再び表示されます。
[パスワードの変更] リンクをクリックします。
パスワード変更ページで、古いパスワードと新しいパスワードを入力し、[パスワードの変更] をクリックします。
[続行] をクリックします。
ホーム ページで [ログアウト] をクリックします。
[ログイン] リンクをクリックします。
新しいパスワードを入力します。
新しいパスワードを使用してログインされます。
ブラウザ ウィンドウを閉じます。
パスワードの回復
ユーザーは自分のパスワードを忘れてしまうことがあります。Web サイトにパスワードの回復ページを追加し、ユーザーが再びサイトにログインできるように構成できます。パスワードの回復は、次の 2 種類の形式で行うことができます。
ユーザーが選択した (またはサイトの設定時にユーザー用に作成された) パスワードをユーザーに送付できます。このオプションの場合、サイトでは、元に戻せる暗号方式を使用してパスワードを格納する必要があります。
ユーザーに新しいパスワードを送付できます。ユーザーは、前の手順で作成したパスワード変更ページを使用してこのパスワードを変更できます。このオプションは、元に戻せない暗号方式 (ハッシュなど) を使用してパスワードを格納する Web サイトの場合に有効です。
メモ : |
---|
高度なセキュリティを必要とするサイトの場合は、電子メールを使用してクリア テキストのパスワードを返送することはお勧めできません。高度なセキュリティが必要なサイトの場合は、SSL (Secure Sockets Layer) などの暗号方式を使用してパスワードを返送することをお勧めします。 |
既定では、ASP.NET メンバシップ システムは、パスワードをハッシュすることでパスワードのセキュリティを保護します。この場合、パスワードは回復できません。したがって、このチュートリアルでは、Web サイトはユーザーに新しいパスワードを送信します。
メモ : |
---|
パスワードを回復するには、Web サイトが電子メール メッセージを送信できる必要があります。(このチュートリアルの「アプリケーションで電子メールを送信できるようにするための構成」で説明した方法で) 電子メールを送信するように Web サイトを構成できない場合は、サイトにパスワードの回復を追加できません。 |
パスワードの回復を追加するには
ソリューション エクスプローラで Web サイトの名前を右クリックし、[新しい項目の追加] をクリックし、RecoverPassword.aspx という名前の新しい Web フォームを追加します。
メモ : このページは、[MemberPages] フォルダ内ではなく、Web サイトのルートに作成してください。
RecoverPassword.aspx ページで、デザイン ビューに切り替え、「Reset my password to a new value」などの静的テキストを入力します。[書式設定] ツール バーの [フォーマットのブロック] ボックスの一覧を使用して、テキストを見出し 1 として書式指定します。
ツールボックスの [ログイン] グループから、PasswordRecovery コントロールをページにドラッグします。
ツールボックスの [標準] グループから、HyperLink コントロールをページにドラッグします。HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Home に設定し、href プロパティを ~/Default.aspx に設定します。
Default.aspx ページに切り替えます。
LoginView コントロールを右クリックし、[スマート タグの表示] をクリックします。[LoginView タスク] メニューの [ビュー] ボックスの [AnonymousTemplate] をクリックします。
これにより、LoginView コントロールが編集モードに切り替わり、ログインしていないユーザーに表示される内容を編集できるようになります。
ツールボックスの [標準] グループから、HyperLink コントロールをテンプレートにドラッグします。HyperLink コントロールの [プロパティ] ウィンドウで、Text プロパティを Forgot your password? に設定し、href プロパティを ~/RecoverPassword.aspx に設定します。
ここでパスワードの回復をテストできます。
パスワードの回復をテストするには
Ctrl キーを押しながら F5 キーを押して Web サイトを実行します。
既定では、ログインしていないので、LoginView コントロールの匿名テンプレートが表示されます。
[Forgot your password?] リンクをクリックします。
RecoverPassword.aspx ページが表示されます。
ユーザー名を入力し、[送信] をクリックします。
セキュリティ上の質問が表示され、セキュリティ上の解答を入力するよう求められます。
解答を入力し、[送信] をクリックします。
正しい解答を入力した場合は、パスワードがリセットされ、新しいパスワードが電子メールで送信されます。
次の手順
このチュートリアルでは、ユーザーに資格情報の入力を求め、ログインしているユーザーに情報を表示し、忘れたパスワードの回復をユーザーに許可し、ページへのアクセスを制限する機能を持つアプリケーションを作成するという、単純ではあるけれども総合的なシナリオを示しました。このチュートリアルで示した手法とコントロールを使用して、より高度なページおよびアプリケーションを作成できます。たとえば、次の場合です。
追加のユーザーを作成し、管理者、営業、メンバなどのロール (グループ) を定義し、ユーザーを異なるロールに割り当てます。詳細については、「チュートリアル : ロールによる Web サイトユーザーの管理」を参照してください。
既定の Access プロバイダから SQL プロバイダに、メンバシップ プロバイダを変更します。小規模または中規模のサイトの場合は Access データベースにメンバシップ情報を格納するのが適していますが、トラフィック量が多いサイトでは、Microsoft SQL Server をメンバシップ ストアとして使用するのが適しています。詳細については、「Web サイト管理ツールの [プロバイダ] タブ」および「SQL Server 向けアプリケーション サービス データベースの作成」を参照してください。
ログイン コントロールの外観を変更します。Login、PasswordRecovery、および CreateUserWizard の各コントロールはすべてテンプレートをサポートし、テンプレートを使用して、コントロールに格納するテキストやボタンを構成したり、コントロールの色、フォント、その他の外観の特徴を変更したりできます。
匿名ユーザーだけでなく、特定のユーザーやロールに対して、ページやフォルダへのアクセスを制限する規則を作成します。
メンバシップをプロファイル プロパティと組み合わせて、各ユーザーに固有の設定を保存できるようにします。詳細については、「チュートリアル : プロファイル プロパティによる Web サイト ユーザー情報の保持」を参照してください。
ログイン コントロールとマスタ ページを組み合わせます。マスタ ページを使用すると、アプリケーションのすべてのページで使用できるページ レイアウトを定義できます。詳細については、「チュートリアル : Visual Web Developer での ASP.NET マスタ ページの作成と使用」を参照してください。
忘れたパスワードを回復できる機能を追加します。詳細については、「方法 : ASP.NET PasswordRecovery コントロールを使用してユーザーのパスワード回復機能を有効にする」を参照してください。