Roles クラス

定義

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

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

次の例は、ASP.NET メンバーシップと ASP.NET ロールの両方を使用し、SQL Server データベースにメンバーシップとロールの情報を格納するために使用SqlRoleProviderするように構成されたアプリケーションの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>

次のコード例では、ユーザーが他のユーザーのロールを表示できるようにする前に、ログオンしているユーザーが Administrators ロールに属しているかどうかをプログラムで確認します。

注釈

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

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

ASP.NET アプリケーションのロール管理を有効にするには、次の例に示すように、アプリケーションのsystem.webWeb.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 ファイルの次の 承認 セクションでは、ユーザーが (匿名ユーザーを拒否して) ログオンする必要があり、管理者ロールのユーザーのみがアクセスを許可します。

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

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

プログラムでロール メンバーシップを確認するには、メソッドでIsUserInRoleクラスまたはプロパティをPage.User使用Rolesするか、メソッドでプロパティを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 にキャッシュされるロール名の信頼性を向上させることができます。 既定値 CookieProtectionValueAll、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)

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

適用対象

こちらもご覧ください