Roles Roles Roles Roles Class

定義

ASP.NET アプリケーションの承認チェックに使用するロールのユーザー メンバーシップを管理します。Manages user membership in roles for authorization checking in an ASP.NET application. このクラスは継承できません。This class cannot be inherited.

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

次の例は、ASP.NET membership ロールと ASP.NET ロールの両方を使用するように構成されたアプリケーションの web.config SqlRoleProviderファイルを示しています。また、を使用して、メンバーシップとロール情報を SQL Server データベースに格納します。The following example shows the Web.config file for an application configured to use both ASP.NET membership and ASP.NET roles and to use the SqlRoleProvider to store membership and role information in a SQL Server database. ユーザーはフォーム認証を使用して認証され、管理者ロールのユーザーのみがアプリケーションへのアクセスを許可されます。Users are authenticated with forms authentication and only users in the Administrators role are allowed access to the application.

<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>  

次のコード例では、ユーザーが他のユーザーのロールを表示できるようにする前に、ログオンしているユーザーが管理者ロールにあるかどうかをプログラムによって確認します。The following code example programmatically checks whether the logged-on user is in the Administrators role before allowing the user to view other users' roles.

注釈

ASP.NET ロール管理を使用すると、ロールと呼ばれるユーザーのグループに基づいて、アプリケーションの承認を管理できます。ASP.NET role management enables you to manage authorization for your application based on groups of users, referred to as roles. ユーザーをロールに割り当てることで、ユーザー名に基づいて承認を指定するのではなく、ロールに基づいて Web アプリケーションのさまざまな部分または機能へのアクセスを制御できます。By assigning users to roles, you can control access to different parts or features of your Web application based on role instead of, or in addition to, specifying authorization based on user name. たとえば、従業員のアプリケーションには、ロールごとに異なる権限が指定されているマネージャー、従業員、ディレクターなどのロールがある場合があります。For example, an employee application might have roles such as Managers, Employees, Directors, and so on, where different privileges are specified for each role.

ユーザーは複数のロールに属することができます。Users can belong to more than one role. たとえば、サイトがディスカッションフォーラムの場合、一部のユーザーはメンバーとモデレーターの両方の役割を果たすことがあります。For example, if your site is a discussion forum, some users might be in the role of both Members and Moderators. 各ロールは、サイトに対して異なる権限を持つように定義できます。また、両方のロールに属しているユーザーには、両方の権限セットが与えられます。You might define each role to have different privileges on the site, and a user who is in both roles would then have both sets of privileges.

ASP.NET アプリケーションのロール管理を有効にするには 、次の例system.webに示すように、アプリケーションの web.config ファイルのセクションの roleManager 要素を使用します。To enable role management for your ASP.NET application, use the roleManager element of the system.web section in the Web.config file for your application, as shown in the following example.

<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 アプリケーションの構成ファイルで指定することも、コード内でプログラムで指定することもできます。You can specify authorization rules in the configuration file for your Web application or programmatically in your code. たとえば、web.config ファイルの次の承認セクションでは、ユーザーがログオンする必要があり (匿名ユーザーを拒否することによって)、管理者ロールのユーザーのみがアクセスできるようにする必要があります。For example, the following authorization section from a Web.config file requires users to log on (by denying anonymous users), and then allows only users in the Administrators role to have access.

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

アプリケーションの web.config ファイルauthorizationのセクションを使用してロールに基づいて承認を指定する場合、アプリケーションのユーザーは認証されたユーザー id を提供する必要があります。If you use the authorization section in your application's Web.config file to specify authorization based on roles, users of your application must supply an authenticated user identity. Windows 認証またはフォーム認証を使用して、ユーザーを認証できます。You can authenticate users by using either Windows or Forms authentication. 匿名ユーザーをロールに割り当てることはできません。Anonymous users cannot be assigned to a role. ロールは、ASP.NET Membershipクラスとは別に使用することも、組み合わせて使用することもできます。Roles can be used independently of, or in conjunction with, the ASP.NET Membership classes.

プログラムによってロールのメンバーシップを確認するRolesには、 Page.User IsUserInRoleメソッドでクラスまたはプロパティを使用するIPrincipal.IsInRolePage.User 、メソッドを使用してプロパティを使用できます。To verify role membership programmatically, you can use the Roles class or the Page.User property with the IsUserInRole method, or you can use the Page.User property with the IPrincipal.IsInRole method. プログラムによってロールのメンバーシップを確認するサンプルコードについては、このトピックの「例」を参照してください。For sample code that programmatically checks role membership, see the Example section in this topic.

クラスRolesを使用すると、ロールを作成および削除したり、ユーザーをロールに追加または削除したりすることもできます。The Roles class also enables you to create and delete roles and to add users to or remove users from roles.

注意

WindowsTokenRoleProviderクラスを使用するようにアプリケーションを構成した場合は、ロールまたはロールメンバーシップを変更することはできません。If you have configured your application to use the WindowsTokenRoleProvider class, you cannot modify roles or role membership. クラスWindowsTokenRoleProviderは、Windows セキュリティグループのメンバーシップのみを検証します。The WindowsTokenRoleProvider class verifies membership in Windows security groups only. この場合、グループを作成および削除したり、グループのメンバーシップを管理したりするには、ASP.NET ロールではなく Windows ユーザーアカウント管理を使用する必要があります。In this case, you must use Windows user account management rather than ASP.NET roles to create and delete groups and manage group membership.

ロール情報は、複数のデータソースに格納できます。You can store role information in several data sources.

  • クラスを使用しWindowsTokenRoleProviderて、Windows グループのメンバーシップに基づいてロール情報を取得できます。You can use the WindowsTokenRoleProvider class to retrieve role information based on membership in Windows groups.

  • ロール情報は、 SqlRoleProviderクラスを使用して SQL Server データベースに格納できます。You can store role information in a SQL Server database by using the SqlRoleProvider class.

  • 既存のロール情報がある場合、またはにロール情報を格納し、Windows、承認ストア、SQL Server 以外のデータソースからロール情報を取得する場合は、「」を継承するクラスを作成してカスタムロールプロバイダーを実装できます。RoleProvider抽象クラス。If you have existing role information, or want to store role information in and retrieve role information from a data source other than Windows, an Authorization Store, or SQL Server, you can implement a custom role provider by creating a class that inherits the RoleProvider abstract class. 詳細については、「ロールプロバイダーの実装」を参照してください。For more information, see Implementing a Role Provider.

ユーザーのブラウザーが cookie を受け入れる場合は、ユーザーのコンピューターの cookie にそのユーザーのロール情報を格納できます。If a user's browser accepts cookies, you can store role information for that user in a cookie on the user's computer. 各ページ要求で、ASP.NET はそのユーザーのロール情報をクッキーから読み取ります。On each page request, ASP.NET reads the role information for that user from the cookie. これにより、データソースがロール情報を取得するために必要な通信量を減らすことで、アプリケーションのパフォーマンスを向上させることができます。This can improve application performance by reducing the amount of communication required with the data source to retrieve role information. ユーザーのロール情報が長すぎて cookie に格納できない場合、ASP.NET は、最近使用したロール情報だけを cookie に格納し、必要に応じてデータソース内の追加のロール情報を検索します。If the role information for a user is too long to store in a cookie, ASP.NET stores just the most recently used role information in the cookie and then looks up additional role information in the data source as required. ユーザーのブラウザーで cookie がサポートされていない場合、または cookie が無効になっている場合、ロール情報はクッキーにキャッシュされません。If the user's browser does not support cookies or cookies are disabled, role information is not cached in a cookie.

ASP.NET ロールを構成するときにCookieProtectionValueプロパティを指定することで、クッキーにキャッシュされたロール名の信頼性を向上させることができます。You can improve the reliability of the role names cached in a cookie by specifying a CookieProtectionValue property when you configure ASP.NET roles. 既定値CookieProtectionValueAllで、クッキーのロール名を暗号化し、クッキーの内容が変更されていないことを検証します。The default CookieProtectionValue is All, which encrypts role names in the cookie and validates that the cookie contents have not been altered.

プロパティ

ApplicationName ApplicationName ApplicationName ApplicationName

ロール情報を保管および取得するアプリケーションの名前を取得または設定します。Gets or sets the name of the application to store and retrieve role information for.

CacheRolesInCookie CacheRolesInCookie CacheRolesInCookie CacheRolesInCookie

現在のユーザーのロールがクッキーにキャッシュされているかどうかを示す値を取得します。Gets a value indicating whether the current user's roles are cached in a cookie.

CookieName CookieName CookieName CookieName

ロール名がキャッシュされているクッキーの名前を取得します。Gets the name of the cookie where role names are cached.

CookiePath CookiePath CookiePath CookiePath

キャッシュされているロール名のクッキーへのパスを取得します。Gets the path for the cached role names cookie.

CookieProtectionValue CookieProtectionValue CookieProtectionValue CookieProtectionValue

クッキーにキャッシュされるロール名のセキュリティ保護の方法を示す値を取得します。Gets a value that indicates how role names cached in a cookie are protected.

CookieRequireSSL CookieRequireSSL CookieRequireSSL CookieRequireSSL

ロール名のクッキーをサーバーに返すために SSL を必要とするかどうかを示す値を取得します。Gets a value indicating whether the role names cookie requires SSL in order to be returned to the server.

CookieSlidingExpiration CookieSlidingExpiration CookieSlidingExpiration CookieSlidingExpiration

ロール名のクッキーの有効期限の日時を定期的にリセットするかどうかを示します。Indicates whether the role names cookie expiration date and time will be reset periodically.

CookieTimeout CookieTimeout CookieTimeout CookieTimeout

ロール クッキーの有効期限が切れるまでの時間 (分) を取得します。Gets the number of minutes before the roles cookie expires.

CreatePersistentCookie CreatePersistentCookie CreatePersistentCookie CreatePersistentCookie

ロール名のクッキーがセッション ベースか、または永続的かを示す値を取得します。Gets a value indicating whether the role-names cookie is session-based or persistent.

Domain Domain Domain Domain

ロール名のクッキーのドメインの値を取得します。Gets the value of the domain of the role-names cookie.

Enabled Enabled Enabled Enabled

現在の Web アプリケーションに対してロール管理が有効になっているかどうかを示す値を取得または設定します。Gets or sets a value indicating whether role management is enabled for the current Web application.

MaxCachedResults MaxCachedResults MaxCachedResults MaxCachedResults

ユーザーに対してキャッシュするロール名の最大数を取得します。Gets the maximum number of role names to be cached for a user.

Provider Provider Provider Provider

アプリケーションの既定のロール プロバイダーを取得します。Gets the default role provider for the application.

Providers Providers Providers Providers

ASP.NET アプリケーションのロール プロバイダーのコレクションを取得します。Gets a collection of the role providers for the ASP.NET application.

メソッド

AddUsersToRole(String[], String) AddUsersToRole(String[], String) AddUsersToRole(String[], String) AddUsersToRole(String[], String)

指定されたユーザーを指定されたロールに追加します。Adds the specified users to the specified role.

AddUsersToRoles(String[], String[]) AddUsersToRoles(String[], String[]) AddUsersToRoles(String[], String[]) AddUsersToRoles(String[], String[])

指定されたユーザーを指定されたロールに追加します。Adds the specified users to the specified roles.

AddUserToRole(String, String) AddUserToRole(String, String) AddUserToRole(String, String) AddUserToRole(String, String)

指定されたユーザーを指定されたロールに追加します。Adds the specified user to the specified role.

AddUserToRoles(String, String[]) AddUserToRoles(String, String[]) AddUserToRoles(String, String[]) AddUserToRoles(String, String[])

指定されたユーザーを指定されたロールに追加します。Adds the specified user to the specified roles.

CreateRole(String) CreateRole(String) CreateRole(String) CreateRole(String)

新しいロールをデータ ソースに追加します。Adds a new role to the data source.

DeleteCookie() DeleteCookie() DeleteCookie() DeleteCookie()

ロール名がキャッシュされているクッキーを削除します。Deletes the cookie where role names are cached.

DeleteRole(String, Boolean) DeleteRole(String, Boolean) DeleteRole(String, Boolean) DeleteRole(String, Boolean)

データ ソースからロールを削除します。Removes a role from the data source.

DeleteRole(String) DeleteRole(String) DeleteRole(String) DeleteRole(String)

データ ソースからロールを削除します。Removes a role from the data source.

FindUsersInRole(String, String) FindUsersInRole(String, String) FindUsersInRole(String, String) FindUsersInRole(String, String)

指定されたロールで、ユーザー名が指定内容と一致するユーザーの一覧を取得します。Gets a list of users in a specified role where the user name contains the specified user name to match.

GetAllRoles() GetAllRoles() GetAllRoles() GetAllRoles()

アプリケーションのすべてのロールのリストを取得します。Gets a list of all the roles for the application.

GetRolesForUser() GetRolesForUser() GetRolesForUser() GetRolesForUser()

現在ログオンしているユーザーに割り当てられているロールのリストを取得します。Gets a list of the roles that the currently logged-on user is in.

GetRolesForUser(String) GetRolesForUser(String) GetRolesForUser(String) GetRolesForUser(String)

ユーザーに割り当てられたロールのリストを取得します。Gets a list of the roles that a user is in.

GetUsersInRole(String) GetUsersInRole(String) GetUsersInRole(String) GetUsersInRole(String)

指定されたロールに属するユーザーのリストを取得します。Gets a list of users in the specified role.

IsUserInRole(String) IsUserInRole(String) IsUserInRole(String) IsUserInRole(String)

現在ログオンしているユーザーが指定されたロールに存在するかどうかを示す値を取得します。Gets a value indicating whether the currently logged-on user is in the specified role. API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すよう意図されており、その許可されたユース ケースではスレッド セーフです。The API is only intended to be called within the context of an ASP.NET request thread, and in that sanctioned use case it is thread-safe.

IsUserInRole(String, String) IsUserInRole(String, String) IsUserInRole(String, String) IsUserInRole(String, String)

指定したユーザーが指定したロールに存在するかどうかを示す値を取得します。Gets a value indicating whether the specified user is in the specified role. API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すよう意図されており、その許可されたユース ケースではスレッド セーフです。The API is only intended to be called within the context of an ASP.NET request thread, and in that sanctioned use case it is thread-safe.

RemoveUserFromRole(String, String) RemoveUserFromRole(String, String) RemoveUserFromRole(String, String) RemoveUserFromRole(String, String)

指定されたユーザーを指定されたロールから削除します。Removes the specified user from the specified role.

RemoveUserFromRoles(String, String[]) RemoveUserFromRoles(String, String[]) RemoveUserFromRoles(String, String[]) RemoveUserFromRoles(String, String[])

指定したユーザーを指定したロールから削除します。Removes the specified user from the specified roles.

RemoveUsersFromRole(String[], String) RemoveUsersFromRole(String[], String) RemoveUsersFromRole(String[], String) RemoveUsersFromRole(String[], String)

指定したユーザーを指定したロールから削除します。Removes the specified users from the specified role.

RemoveUsersFromRoles(String[], String[]) RemoveUsersFromRoles(String[], String[]) RemoveUsersFromRoles(String[], String[]) RemoveUsersFromRoles(String[], String[])

指定されたユーザー名を指定されたロールから削除します。Removes the specified user names from the specified roles.

RoleExists(String) RoleExists(String) RoleExists(String) RoleExists(String)

指定されたロール名がロール データ ソースに既に存在するかどうかを示す値を取得します。Gets a value indicating whether the specified role name already exists in the role data source.

適用対象

こちらもご覧ください