Roles クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 ファイルを示しています。 ユーザーはフォーム認証で認証され、管理者ロールのユーザーのみがアプリケーションへのアクセスを許可されます。
<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 アプリケーションのロール管理を有効にするには、次の例に示すように、アプリケーションの Web.config ファイルの system.web セクションの 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 クラスとは別に、または組み合わせて使用できます。
プログラムでロール メンバーシップを確認するには、IsUserInRole メソッドで Roles クラスまたは Page.User プロパティを使用するか、IPrincipal.IsInRole メソッドで Page.User プロパティを使用できます。 プログラムによってロールメンバーシップをチェックするサンプル コードについては、このトピックの「例」セクションを参照してください。
Roles クラスを使用すると、ロールを作成および削除したり、ロールにユーザーを追加したり、ロールからユーザーを削除したりすることもできます。
注
WindowsTokenRoleProvider クラスを使用するようにアプリケーションを構成した場合、ロールまたはロール メンバーシップを変更することはできません。 WindowsTokenRoleProvider クラスは、Windows セキュリティ グループのメンバーシップのみを検証します。 この場合、グループを作成および削除したり、グループ メンバーシップを管理したりするには、ロールを ASP.NET するのではなく、Windows ユーザー アカウント管理を使用する必要があります。
ロール情報は、複数のデータ ソースに格納できます。
WindowsTokenRoleProvider クラスを使用すると、Windows グループのメンバーシップに基づいてロール情報を取得できます。
SqlRoleProvider クラスを使用して、SQL Server データベースにロール情報を格納できます。
既存のロール情報がある場合、または 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 |
現在のユーザーのロールが Cookie にキャッシュされているかどうかを示す値を取得します。 |
| CookieName |
ロール名がキャッシュされる Cookie の名前を取得します。 |
| CookiePath |
キャッシュされたロール名 Cookie のパスを取得します。 |
| CookieProtectionValue |
Cookie にキャッシュされたロール名の保護方法を示す値を取得します。 |
| CookieRequireSSL |
ロール名 Cookie がサーバーに返されるために SSL を必要とするかどうかを示す値を取得します。 |
| CookieSlidingExpiration |
ロール名 Cookie の有効期限の日付と時刻を定期的にリセットするかどうかを示します。 |
| CookieTimeout |
ロール Cookie の有効期限が切れるまでの時間 (分) を取得します。 |
| CreatePersistentCookie |
ロール名 Cookie がセッション ベースか永続的かを示す値を取得します。 |
| Domain |
ロール名 Cookie のドメインの値を取得します。 |
| Enabled |
現在の Web アプリケーションに対してロール管理が有効かどうかを示す値を取得または設定します。 |
| MaxCachedResults |
ユーザーに対してキャッシュされるロール名の最大数を取得します。 |
| Provider |
アプリケーションの既定のロール プロバイダーを取得します。 |
| Providers |
ASP.NET アプリケーションのロール プロバイダーのコレクションを取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| AddUsersToRole(String[], String) |
指定したユーザーを指定したロールに追加します。 |
| AddUsersToRoles(String[], String[]) |
指定したユーザーを指定したロールに追加します。 |
| AddUserToRole(String, String) |
指定したユーザーを指定したロールに追加します。 |
| AddUserToRoles(String, String[]) |
指定したユーザーを指定したロールに追加します。 |
| CreateRole(String) |
データ ソースに新しいロールを追加します。 |
| DeleteCookie() |
ロール名がキャッシュされている Cookie を削除します。 |
| DeleteRole(String, Boolean) |
データ ソースからロールを削除します。 |
| DeleteRole(String) |
データ ソースからロールを削除します。 |
| FindUsersInRole(String, String) |
ユーザー名に一致する指定したユーザー名が含まれる、指定したロール内のユーザーの一覧を取得します。 |
| GetAllRoles() |
アプリケーションのすべてのロールの一覧を取得します。 |
| GetRolesForUser() |
現在ログオンしているユーザーが存在するロールの一覧を取得します。 |
| GetRolesForUser(String) |
ユーザーが存在するロールの一覧を取得します。 |
| GetUsersInRole(String) |
指定したロールのユーザーの一覧を取得します。 |
| IsUserInRole(String, String) |
指定したユーザーが指定したロールに含まれているかどうかを示す値を取得します。 API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すことを目的としており、承認されたユース ケースではスレッド セーフです。 |
| IsUserInRole(String) |
現在ログオンしているユーザーが指定したロールに含まれているかどうかを示す値を取得します。 API は、ASP.NET 要求スレッドのコンテキスト内でのみ呼び出すことを目的としており、承認されたユース ケースではスレッド セーフです。 |
| RemoveUserFromRole(String, String) |
指定したユーザーを指定したロールから削除します。 |
| RemoveUserFromRoles(String, String[]) |
指定したユーザーを指定したロールから削除します。 |
| RemoveUsersFromRole(String[], String) |
指定したユーザーを指定したロールから削除します。 |
| RemoveUsersFromRoles(String[], String[]) |
指定したロールから指定したユーザー名を削除します。 |
| RoleExists(String) |
指定したロール名がロール データ ソースに既に存在するかどうかを示す値を取得します。 |