次の方法で共有


Roles クラス

定義

ASP.NET アプリケーションの承認チェックに使用するロールのユーザー メンバーシップを管理します。 このクラスは継承できません。

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
継承
Roles

次の例は、ASP.NET メンバーシップと ASP.NET ロールの両方を使用し、 を使用 SqlRoleProvider してメンバーシップとロール情報を SQL Server データベースに格納するように構成されたアプリケーションの Web.config ファイルを示しています。 ユーザーはフォーム認証で認証され、Administrators ロールのユーザーのみがアプリケーションへのアクセスを許可されます。

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
      <allow roles="Administrators" />
      <deny users="*" />
    </authorization>

    <membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
    </membership>

    <roleManager defaultProvider="SqlProvider"
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="true"
      cookieSlidingExpiration="true"
      cookieProtection="All" >

      <providers>
        <clear />
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider"
          connectionStringName="SqlServices"
          applicationName="SampleApplication" />
        </providers>

    </roleManager>
  </system.web>
</configuration>

次のコード例では、ログオンしているユーザーが管理者ロールに属しているかどうかをプログラムで確認してから、ユーザーに他のユーザーのロールの表示を許可します。

注釈

ASP.NET ロール管理を使用すると、ロールと呼ばれるユーザーのグループに基づいて、アプリケーションの承認を管理できます。 ユーザーをロールに割り当てることで、ユーザー名に基づいて承認を指定する代わりに、ロールに基づいて Web アプリケーションのさまざまなパーツまたは機能へのアクセスを制御できます。 たとえば、従業員アプリケーションには、マネージャー、従業員、取締役などのロールがあり、各ロールに異なる特権が指定されている場合があります。

ユーザーは複数のロールに属する場合があります。 たとえば、サイトがディスカッション フォーラムの場合、一部のユーザーがメンバーとモデレーターの両方の役割を果たす可能性があります。 サイトで異なる特権を持つ各ロールを定義し、両方のロールに含まれるユーザーは両方の権限セットを持つ場合があります。

ASP.NET アプリケーションのロール管理を有効にするには、次の例に示すように、アプリケーションの system.web Web.config ファイルの セクションの roleManager 要素を使用します。

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

  <roleManager defaultProvider="SqlProvider"
    enabled="true"
    cacheRolesInCookie="true"
    cookieName=".ASPROLES"
    cookieTimeout="30"
    cookiePath="/"
    cookieRequireSSL="false"
    cookieSlidingExpiration="true"
    cookieProtection="All" >
    <providers>
      <add
        name="SqlProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlServices"
        applicationName="SampleApplication" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

承認規則は、Web アプリケーションの構成ファイルで指定することも、コードでプログラムで指定することもできます。 たとえば、Web.config ファイルの次の 承認 セクションでは、(匿名ユーザーを拒否することによって) ユーザーがログオンし、Administrators ロールのユーザーのみがアクセスできるようにする必要があります。

<authorization>
  <deny users="?" />
  <allow roles="Administrators" />
  <deny users="*" />
</authorization>

アプリケーションの authorization Web.config ファイルの セクションを使用してロールに基づいて承認を指定する場合、アプリケーションのユーザーは認証されたユーザー ID を指定する必要があります。 ユーザーは、Windows 認証またはフォーム認証を使用して認証できます。 匿名ユーザーをロールに割り当てることはできません。 ロールは、ASP.NET Membership クラスとは独立して、または組み合わせて使用できます。

プログラムでロール メンバーシップを確認するには、 メソッドで RolesIsUserInRole クラスまたは プロパティをPage.User使用するか、 メソッドで プロパティをPage.UserIPrincipal.IsInRole使用できます。 プログラムによってロールのメンバーシップを確認するサンプル コードについては、このトピックの「例」セクションを参照してください。

Rolesクラスを使用すると、ロールを作成および削除したり、ロールにユーザーを追加したり、ロールからユーザーを削除したりすることもできます。

注意

クラスを使用 WindowsTokenRoleProvider するようにアプリケーションを構成した場合、ロールまたはロール メンバーシップを変更することはできません。 クラスは WindowsTokenRoleProvider 、Windows セキュリティ グループのメンバーシップのみを検証します。 この場合、ロールを ASP.NET するのではなく、Windows ユーザー アカウント管理を使用して、グループを作成および削除し、グループ メンバーシップを管理する必要があります。

ロール情報は、複数のデータ ソースに格納できます。

  • クラスを WindowsTokenRoleProvider 使用すると、Windows グループのメンバーシップに基づいてロール情報を取得できます。

  • クラスを使用して、SQL Server データベースにロール情報を SqlRoleProvider 格納できます。

  • 既存のロール情報がある場合、またはにロール情報を格納し、Windows、承認ストア、または SQL Server 以外のデータ ソースからロール情報を取得する場合は、抽象クラスを継承するクラスを作成することで、カスタム ロール プロバイダーを RoleProvider 実装できます。 詳細については、「 ロール プロバイダーの実装」を参照してください。

ユーザーのブラウザーが Cookie を受け入れる場合は、そのユーザーのロール情報をユーザーのコンピューターの Cookie に格納できます。 各ページ要求で、ASP.NET は Cookie からそのユーザーのロール情報を読み取ります。 これにより、ロール情報を取得するためにデータ ソースとの通信量を減らすことで、アプリケーションのパフォーマンスを向上させることができます。 ユーザーのロール情報が Cookie に格納するには長すぎる場合、ASP.NET は Cookie に最後に使用したロール情報のみを格納し、必要に応じてデータ ソース内の追加のロール情報を検索します。 ユーザーのブラウザーが Cookie をサポートしていない場合、または Cookie が無効になっている場合、ロール情報は Cookie にキャッシュされません。

ASP.NET ロールを構成するときに プロパティを指定 CookieProtectionValue することで、Cookie にキャッシュされるロール名の信頼性を向上させることができます。 既定値 CookieProtectionValue は です All。Cookie 内のロール名を暗号化し、Cookie の内容が変更されていないことを検証します。

プロパティ

ApplicationName

ロール情報を保管および取得するアプリケーションの名前を取得または設定します。

CacheRolesInCookie

現在のユーザーのロールがクッキーにキャッシュされているかどうかを示す値を取得します。

CookieName

ロール名がキャッシュされているクッキーの名前を取得します。

CookiePath

キャッシュされているロール名のクッキーへのパスを取得します。

CookieProtectionValue

クッキーにキャッシュされるロール名のセキュリティ保護の方法を示す値を取得します。

CookieRequireSSL

ロール名のクッキーをサーバーに返すために SSL を必要とするかどうかを示す値を取得します。

CookieSlidingExpiration

ロール名のクッキーの有効期限の日時を定期的にリセットするかどうかを示します。

CookieTimeout

ロール クッキーの有効期限が切れるまでの時間 (分) を取得します。

CreatePersistentCookie

ロール名のクッキーがセッション ベースか、または永続的かを示す値を取得します。

Domain

ロール名のクッキーのドメインの値を取得します。

Enabled

現在の Web アプリケーションに対してロール管理が有効になっているかどうかを示す値を取得または設定します。

MaxCachedResults

ユーザーに対してキャッシュするロール名の最大数を取得します。

Provider

アプリケーションの既定のロール プロバイダーを取得します。

Providers

ASP.NET アプリケーションのロール プロバイダーのコレクションを取得します。

メソッド

AddUsersToRole(String[], String)

指定されたユーザーを指定されたロールに追加します。

AddUsersToRoles(String[], String[])

指定されたユーザーを指定されたロールに追加します。

AddUserToRole(String, String)

指定されたユーザーを指定されたロールに追加します。

AddUserToRoles(String, String[])

指定されたユーザーを指定されたロールに追加します。

CreateRole(String)

新しいロールをデータ ソースに追加します。

DeleteCookie()

ロール名がキャッシュされているクッキーを削除します。

DeleteRole(String)

データ ソースからロールを削除します。

DeleteRole(String, Boolean)

データ ソースからロールを削除します。

FindUsersInRole(String, String)

指定されたロールで、ユーザー名が指定内容と一致するユーザーの一覧を取得します。

GetAllRoles()

アプリケーションのすべてのロールのリストを取得します。

GetRolesForUser()

現在ログオンしているユーザーに割り当てられているロールのリストを取得します。

GetRolesForUser(String)

ユーザーに割り当てられたロールのリストを取得します。

GetUsersInRole(String)

指定されたロールに属するユーザーのリストを取得します。

IsUserInRole(String)

現在ログオンしているユーザーが指定されたロールに存在するかどうかを示す値を取得します。 API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すよう意図されており、その許可されたユース ケースではスレッド セーフです。

IsUserInRole(String, String)

指定したユーザーが指定したロールに存在するかどうかを示す値を取得します。 API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すよう意図されており、その許可されたユース ケースではスレッド セーフです。

RemoveUserFromRole(String, String)

指定されたユーザーを指定されたロールから削除します。

RemoveUserFromRoles(String, String[])

指定したユーザーを指定したロールから削除します。

RemoveUsersFromRole(String[], String)

指定したユーザーを指定したロールから削除します。

RemoveUsersFromRoles(String[], String[])

指定されたユーザー名を指定されたロールから削除します。

RoleExists(String)

指定されたロール名がロール データ ソースに既に存在するかどうかを示す値を取得します。

適用対象

こちらもご覧ください