次の方法で共有


チュートリアル : ロールによる Web サイトユーザーの管理

更新 : 2007 年 11 月

多くの ASP.NET アプリケーションでは、メンバシップを使用してユーザーを認証し、ユーザーがメンバ専用ページのような制限付きリソースにアクセスできるようにします。アプリケーションで多数のユーザーをサポートする場合、またはユーザーの一覧が時間と共に変化する場合は、ユーザー アクセスを管理するロールの作成を検討してください。ロールは、管理者、営業、メンバなどのグループ名です。ロールを確立すると、個別のユーザーをロールに割り当てることができます。その後で、ロールにアクセス許可を付与できます。同じロール内のすべてのユーザーは、割り当てられたアクセス許可を継承します。そのため、ロールを使用すると、ユーザー グループのアクセス許可を効率的に管理できます。

このチュートリアルでは、次の作業を行う方法について説明します。

  • アプリケーションのロールを確立します。

  • ユーザーをロールに割り当てます。

  • ユーザーに応じてページへのアクセスを選択的に許可または拒否するルール (アクセス許可) を作成します。

  • ユーザーが特定のロールに割り当てられているか、および現在のユーザーに割り当てられているロールはどれかをプログラムで判断します。

前提条件

このチュートリアルを実行するための要件は次のとおりです。

  • Visual Studio

  • .NET Framework

  • コンピュータにローカルにインストールされた IIS

  • 使用するコンピュータにローカルにインストールされた SQL Server Express Edition

  • 各ユーザーを識別する方法

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    実行用アプリケーションでは、ユーザーをさまざまな方法で識別できます。たとえば、ユーザーの Windows ユーザー アカウントを使用します。ただし、このチュートリアルでは、サイトへのユーザーのログインによってユーザーを識別します。そのため、ASP.NET メンバシップを使用するようにサイトを設定する必要があります。メンバシップを使用して既に ASP.NET Web サイトを設定している場合は、このチュートリアルの開始点としてそのサイトを使用できます。

Web サイト、メンバシップ、およびロールの設定

ASP.NET のロールについて作業する前に、Web サイトを使用可能にし、メンバシップを有効化するようにそのサイトを設定して、ユーザー ロールを設定します。「チュートリアル : メンバシップとユーザー ログインを使用する Web サイトの作成」トピックの作業を実行済みの場合は、そのチュートリアルで設定した Web サイトを使用できます。

使用可能な Web サイトがない場合は、次の手順を実行して使用可能な Web サイトを作成します。それ以外の場合は、次のセクション「メンバ専用ページ用フォルダの作成」に進みます。

ローカル IIS Web サイトを作成するには

  1. Visual Studio を開きます。

  2. [ファイル] メニューの [新しい Web サイト] をクリックします。

    [新しい Web サイト] ダイアログ ボックスが表示されます。

  3. [Visual Studio にインストールされたテンプレート] の [ASP.NET Web サイト] をクリックします。

  4. [場所] ボックスの [ファイル システム] をクリックします。

  5. [参照] をクリックし、アプリケーションのディレクトリ (C:\RolesWebSite など) をクリックします。

  6. [Languages] ボックスで、作業に使用するプログラミング言語をクリックします。

    選択したプログラミング言語は Web サイトでの既定として設定されます。ただし、プログラミング言語をページごとに設定することもできます。

  7. [新しい Web サイト] ダイアログ ボックスの [OK] をクリックします。

    Visual Web Developer により Web サイトが作成され、Default.aspx という名前の新しいページが作成されます。

メンバ専用ページ用フォルダの作成

ロールを操作するには、アクセスが制限されたページを保存する 2 つのフォルダ (MemberPages フォルダと GuestPages フォルダ) を作成する必要があります。

t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

メンバシップに関するチュートリアルで使用した Web サイトを再使用する場合は、このフォルダは既に作成されています。その場合は、次の手順 1 をスキップできます。

制限付きアクセス用フォルダを作成するには

  1. ソリューション エクスフローラで Web サイトのルートを右クリックし、[新しいフォルダ] をクリックして、そのフォルダに MemberPages という名前を付けます。

    このフォルダには、一部のユーザーだけがアクセスできるページを格納します。

  2. Web サイトのルートを右クリックし、[新しいフォルダ] をクリックして、そのフォルダに GuestPages という名前を付けます。

    このフォルダには、ログイン済みユーザー (匿名ユーザーを除く) がアクセスできるページを格納します。

メンバシップとロール用の Web サイトの設定

基本の Web サイトを作成した後で、メンバシップとロールを使用するようにその Web サイトを設定します。

メンバシップとロール用の Web サイトを設定するには

  1. [Web サイト] メニューの [ASP.NET の構成] をクリックします。

  2. [セキュリティ] タブをクリックし、[手順に従ってセキュリティを構成するには、セキュリティ設定ウィザードを使用してください。] へのリンクをクリックして、[次へ] をクリックします。

  3. ウィザードの手順 2 に進み、[インターネットから] オプションをクリックします。

    このウィザードには、Web サイトで使用する認証方法を選択できるページが表示されます。

    このオプションでは、アプリケーションでフォームによる認証を使用するように指定します。この場合、ユーザーは、このチュートリアルで後ほど作成するログイン ページを使用してアプリケーションにログインします。

  4. [次へ] をクリックします。

    [プロバイダの詳細設定] を使用してユーザー情報を格納することを示すメッセージが表示されます。アプリケーションでは、既定のプロバイダを使用します。このプロバイダでは、Web サイトの App_Data フォルダにある SQL Server Express Edition データベース ファイルに、メンバシップ情報を格納します。

  5. もう一度 [次へ] をクリックします。

  6. [ステップ 4: ロールの定義] の [この Web サイトにロールを有効化します。] チェックボックスをオンにし、[次へ] をクリックします。

  7. プロンプトが表示されたら、2 つのロール (members と guests) を作成し、[次へ] をクリックします。

  8. [ステップ 5: 新しいユーザーの追加] で、3 つのユーザー名 (member1、guest1、memberGuest) を作成します。

    任意の厳密なパスワードを割り当てることができますが、これらのパスワードを必ず記憶しておいてください。パスワードは最低 7 文字で、少なくとも 1 文字はアルファベット以外の文字にします。電子メール アドレスについては、独自のアドレスを使用します (このチュートリアルでは電子メールを送信しません)。

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    Web サイト管理ツールをまだ閉じないでください。

作成する Web サイトでは、ユーザーがそれぞれのロールに応じて別のページにアクセスできるようにします。そのため、各ロールがアクセスできるフォルダを判断するためのアクセス ルールを作成する必要があります。

サイトのフォルダに関するアクセス ルールを設定するには

  1. Web サイト管理ツールのセキュリティ ウィザードで [次へ] をクリックします。

    [ステップ 6: 新しいアクセス規則の追加] には、各ロール (ユーザー) がアクセスできる Web サイトのページを判断するためルールを作成できるページが表示されます。

  2. [この規則のディレクトリの選択] でルート ノードを展開し、[GuestPages] をクリックします。

  3. [適用する規則] の下の [匿名ユーザー] をクリックします。

  4. [アクセス許可] の下の [拒否] をクリックします。

    作成中のルールでは、匿名ユーザー (ログインしていないユーザー) のアクセスを拒否します。

  5. [この規則の追加] をクリックします。

    新しいルールがページ下部のグリッドに表示されます。ユーザーが [GuestPages] ディレクトリのページを要求すると、このルールが上から下に順に適用され、そのユーザーがそのページにアクセスできるかどうかが判断されます。ユーザーがログインしていない場合、このフォルダ内のページは表示されません。

  6. [この規則のディレクトリの選択] の下の [MemberPages] をクリックします。

  7. [適用する規則] の下の [ロール] をクリックし、そのドロップダウン リストの [メンバ] をクリックします。

  8. [アクセス許可] の下の [許可] をクリックします。

    作成中のルールでは、[メンバ] ロール内のすべてのユーザーに対して [MemberPages] フォルダへのアクセス許可を付与します。

  9. [この規則の追加] をクリックします。

  10. [この規則のディレクトリの選択] の下の [MemberPages] をクリックします。

  11. [適用する規則] の下の [すべてのユーザー] をクリックします。

  12. [アクセス許可] の下の [拒否] をクリックします。

  13. [この規則の追加] をクリックします。

    [MemberPages] フォルダの 2 つ目のルールでは、[メンバ] ロール内のユーザー以外がこのフォルダにアクセスできないようにします。これらのルールは、グリッドに表示している順に上から下に処理されます。

    最初のルール (許可) では、members という名前のロール内のユーザーにアクセスを許可します。2 つ目のルール (拒否) では、他のすべてのユーザーのアクセスを拒否します。アプリケーションに必要な数だけ許可ルールと拒否ルールを作成できます。ユーザーが [MemberPages] ディレクトリのページを要求すると、このルールが上から下に順に適用され、そのユーザーがそのページにアクセスできるかどうかが判断されます。

  14. [完了] をクリックして [セキュリティ] タブに戻ります。

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    Web サイト管理ツールをまだ閉じないでください。

ロールへのユーザーの割り当て

もう 1 つの設定手順として、作成したユーザーをロールに割り当てる必要があります。

ユーザーをロールに割り当てるには

  1. Web サイト管理ツールの [セキュリティ] タブの [ユーザー] の下の [ユーザーの管理] をクリックします。

  2. [guest1] の行の [ロールの編集] をクリックします。

    [ロール] ボックスに使用可能なロールのリストが表示されます。

  3. [guests] チェック ボックスをオンにして、ユーザー [guest1] をロール [guests] に割り当てます。

  4. [member1] の行の [ロールの編集] をクリックして、ユーザー member1 をロール members に割り当てます。

  5. 同じ方法で、ユーザー memberGuest を guests ロールと members ロールに割り当てます。

  6. Web サイト管理ツールを閉じてから、次の操作を行います。

    1. ソリューション エクスプローラで、更新アイコンをクリックします。

    2. [Web サイト] メニューの [ASP.NET の構成] をクリックして、Web サイト管理ツールを再起動します。

      これにより、Web サイト管理ツールで使用していたメンバシップ データベースへの接続が切断されたことを確認できます。

    3. Web サイト管理ツールを、もう一度閉じます。

アクセス制限付きページの追加

メンバシップとロールの設定をテストするには、ログインさせたユーザーを識別する方法を作成する必要があります。作成したアクセス ルールをテストできる Web ページも作成する必要があります。

すべてのユーザーに対する既定のページを作成するには

  1. Visual Studio に切り替えます。

  2. Default.aspx ページを開くか、Default.aspx ページに切り替えて、[デザイン] ビューに切り替えます。

    Default.aspx ページがない場合は、使用する Web サイトのルートにこのページを追加します。

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    ページの名前を必ず Default.aspx にしてください。この名前は、このチュートリアルで使用します。

  3. "Welcome!" のような見出しテキストを追加します。

  4. ツールボックスの [ログイン] グループから LoginStatus コントロールをページにドラッグします。

    ログインしていないユーザーが LoginStatus コントロールをクリックすると、このユーザーは Login.aspx ページに移動します。

  5. ツールボックスの [ログイン] グループから、LoginName コントロールをページにドラッグします。FormatString プロパティを "Hello {0}" に設定します。

    ユーザーがログイン済みの場合、LoginName コントロールはそのユーザーの名前を表示します。

  6. ツールボックスの [標準] グループから HyperLink コントロールをページにドラッグします。HyperLink コントロールの [プロパティ] パネルで、Text プロパティを Guests and Members に設定し、href プロパティを ~/GuestPages/Guests.aspx に設定します。

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    Guests.aspx ページは、このチュートリアルで後ほど作成します。

  7. ツールボックスの [標準] グループから、別の HyperLink コントロールをページにドラッグします。HyperLink コントロールの [プロパティ] パネルで、Text プロパティを Members に設定し、href プロパティを ~/MemberPages/Members.aspx に設定します。

    t32yf0a9.alert_note(ja-jp,VS.90).gifメモ :

    Members.aspx ページは、このチュートリアルで後ほど作成します。

これで、すべてのユーザーがアクセスできるホーム ページが作成されました。ユーザーは、制限付きページなどの別のページにここから移動できます。次の手順では、簡単なログイン ページを作成します。

ログイン ページを作成するには

  1. ソリューション エクスプローラで、Web サイトのルート フォルダを右クリックし、[新しい項目の追加] をクリックします。使用する Web サイトに Login.aspx という名前の Web フォームを追加します。

  2. Login.aspx ページで [デザイン] ビューに切り替えます。

  3. ツールボックスの [ログイン] グループから Login コントロールをページにドラッグします。

  4. Login コントロールの [プロパティ] パネルで、DestinationPageUrl プロパティを ~/Default.aspx に設定します。

さらに、サイトの制限付きコンテンツを表すページを作成する必要があります。

制限付きページを作成するには

  1. ソリューション エクスプローラで [GuestPages] フォルダをクリックし、[新しい項目の追加] をクリックして、Guests.aspx という名前の Web フォームをこのフォルダに追加します。

  2. [デザイン] ビューに切り替えて、Guests.aspx ページに "Welcome to the Guests page!" のような見出しを追加します。

  3. ツールボックスの [標準] グループから HyperLink コントロールをページにドラッグします。HyperLink コントロールの [プロパティ] パネルで、Text プロパティを Home に設定し、href プロパティを ~/Default.aspx に設定します。

  4. ソリューション エクスプローラで [MemberPages] フォルダをクリックし、[新しい項目の追加] をクリックして、Members.aspx という名前の Web フォームを追加します。

  5. [デザイン] ビューに切り替えて、Members.aspx ページに "Welcome to the Members page!" のような見出しを追加します。

  6. ツールボックスの [標準] グループから HyperLink コントロールをページにドラッグします。

  7. HyperLink コントロールの [プロパティ] パネルで、Text プロパティを Home に設定し、href プロパティを ~/Default.aspx に設定します。

    ページへのアクセスを制限するためにページにコードを追加する必要はありません。これらのページはアクセス ルールで保護されたフォルダ内に存在するため、アクセスが制限されます。

ロールのテスト

この段階で、使用するサイトをテストできます。

ロールをテストするには

  1. Default.aspx ページに切り替え、CTRL+F5 キーを押して実行します。

  2. [Guests and Members] をクリックします。

    匿名ユーザーがアクセスできないページにアクセスしようとしているため、Login.aspx ページにリダイレクトされます。

  3. [guests] のロール内にある guest1 としてログインします。

    ログインが成功すると、Guests.aspx ページにリダイレクトされます。

    [ホーム] をクリックして Default.aspx ページに戻ります。

    Default.aspx ページに LoginName コントロールを設定した "Hello, guest1" が表示されます。また、guest1 としてログインしたため、LoginStatus コントロールによってテキスト"Login" が "Logout" に変更されています。

  4. [Guests and Members] をクリックします。

    今回は、ロール "guests" のユーザーとしてログイン済みであるため、Guests.aspx ページに直接移動します。

  5. [ホーム] をクリックして Default.aspx ページに戻ります。

  6. [メンバ] をクリックします。

    guest1 には Members.aspx ページへのアクセス許可がないため、Login.aspx ページにリダイレクトされます。

  7. member1 または memberGuest としてログインします。

    [メンバ] ロールのユーザーとしてログインしているので、Members.aspx ページにリダイレクトされます。

  8. [ホーム] をクリックして Default.aspx ページに戻ります。

    このページには、新しいログイン名が反映されています。

次の手順

このチュートリアルでは、ASP.NET のロール管理の基本機能を説明しています。ロール管理の他の機能も試すことができます。たとえば、次の場合です。

参照

処理手順

チュートリアル : メンバシップとユーザー ログインを使用する Web サイトの作成

チュートリアル : セキュリティ ロールに基づくサイトマップ ノードのフィルタ処理

概念

ロール管理について

参照

AuthorizationSection