Roles クラス

定義

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

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

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

<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 ファイルの次の 承認 セクションでは、ユーザーがログオンする必要があり (匿名ユーザーを拒否することによって)、管理者ロールのユーザーのみがアクセスできるようにする必要があります。

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

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

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

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

注意

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

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

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

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

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

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

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

プロパティ

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)

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

適用対象

こちらもご覧ください