OracleRoleProviderクラスにより、ASP.NETアプリケーションは、ロールおよびユーザー情報をOracleデータベースに格納できます。
クラスの継承
System.Object
System.Configuration.Provider.ProviderBase
System.Web.Security.RoleProvider
Oracle.Web.Security
宣言
// C# public class OracleRoleProvider : RoleProvider
スレッド安全性
すべてのパブリック静的メソッドはスレッドセーフですが、インスタンス・メンバーがスレッドセーフであることは保証されません。
備考
このクラスにより、ASP.NETアプリケーションは、Oracleデータベースにロール情報を格納し、管理できます。このプロバイダが管理するロール情報は、データベース・ロールではなくアプリケーション・ロールであることに注意してください。
例
次に、OracleRoleProviderクラスをデフォルト・プロバイダとして使用するASP.NETアプリケーションのweb.configの例を示します。この構成では、machine.configファイルで指定された接続文字列とデフォルト属性値を使用します。
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<roleManager enabled="true" defaultProvider="OracleRoleProvider"/>
</system.web>
</configuration>
次に、OracleRoleProviderをデフォルト・プロバイダとして使用し、カスタマイズされた設定とアプリケーション固有の接続文字列を使用するASP.NETアプリケーションのweb.configの例を示します。
<?xml version="1.0"?>
<configuration xmlns=
"http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="my_role_app_con_string" connectionString=
"User Id=scott;Password=tiger;Data Source=Oracle"/>
</connectionStrings>
<system.web>
<!-- Enable and customize OracleRoleProvider -->
<roleManager enabled="true" defaultProvider="MyOracleRoleProvider">
<providers>
<add name="MyOracleRoleProvider"
type="Oracle.Web.Security.OracleRoleProvider,
Oracle.Web, Version=2.111.6.20, Culture=neutral,
PublicKeyToken=89b483f429c47342"
connectionStringName="my_role_app_con_string"
applicationName="my_role_app"/>
</providers>
</roleManager>
</system.web>
</configuration>
applicationName属性は、ASP.NETアプリケーションごとに一意の値に設定する必要があります。
要件
ネームスペース: Oracle.Web.Security
アセンブリ: Oracle.Web.dll
Microsoft .NET Frameworkバージョン: 2.0以降
次の表にOracleRoleProviderメンバーをリストします。
OracleRoleProviderコンストラクタ
OracleRoleProviderコンストラクタを、表3-1にリストします。
OracleRoleProvider静的メソッド
OracleRoleProvider静的メソッドを、表3-2にリストします。
表3-2 OracleRoleProvider静的メソッド
| 静的メソッド | 説明 |
|---|---|
|
|
|
|
|
|
OracleRoleProviderパブリック・プロパティ
OracleRoleProviderパブリック・プロパティを、表3-3にリストします。
表3-3 OracleRoleProviderパブリック・プロパティ
| パブリック・プロパティ | 説明 |
|---|---|
|
|
ロール・プロバイダ情報を格納するアプリケーションの名前を取得または設定します |
|
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
|
|
OracleRoleProviderパブリック・メソッド
OracleRoleProviderパブリック・メソッドを、表3-4にリストします。
表3-4 OracleRoleProviderパブリック・メソッド
| パブリック・メソッド | 説明 |
|---|---|
|
|
指定されたロールに指定されたユーザーを追加します |
|
|
データベースに新しいロールを追加します |
|
|
データベース内のロールを削除します |
|
|
|
|
|
指定されたユーザー名に一致するユーザー名の配列を戻します |
|
|
アプリケーションのすべてのロールの配列を戻します |
|
|
|
|
|
指定されたユーザーのロール名の配列を戻します |
|
|
|
|
|
指定されたロール名のユーザーの配列を戻します |
|
|
ASP.NETアプリケーション構成ファイルで指定されたプロパティ値で |
|
|
指定されたユーザーが指定されたロールに存在するかどうかを示します |
|
|
指定されたロール名の配列から指定されたユーザーの配列を削除します |
|
|
指定されたロール名がデータベースに存在するかどうかを示します |
|
|
|
OracleRoleProviderコンストラクタは、OracleRoleProviderクラスのインスタンスを作成します。
オーバーロード・リスト:
このコンストラクタでは、OracleRoleProviderクラスのインスタンスが作成されます。
このコンストラクタでは、OracleRoleProviderクラスのインスタンスが作成されます。
宣言
// C# public OracleRoleProvider();
備考
このコンストラクタでは、OracleRoleProviderクラスの新規インスタンスが作成されます。
OracleRoleProvider静的メソッドを、表3-5にリストします。
表3-5 OracleRoleProvider静的メソッド
| 静的メソッド | 説明 |
|---|---|
|
|
|
|
|
|
OracleRoleProviderパブリック・プロパティを、表3-6にリストします。
表3-6 OracleRoleProviderパブリック・プロパティ
| パブリック・プロパティ | 説明 |
|---|---|
|
|
ロール・プロバイダ情報を格納するアプリケーションの名前を取得または設定します |
|
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
|
|
このプロパティでは、ロール・プロバイダ情報を格納するアプリケーションの名前を取得または設定します。
宣言
// C#
public override string ApplicationName{get; set;};
プロパティ値
アプリケーションの名前。applicationName属性がアプリケーション構成ファイルで指定されていない場合、または値が空の文字列の場合は、このプロパティがアプリケーションの仮想パスに設定されます。
例外
HttpException - ApplicationNameプロパティを設定しているユーザーに、高いASP.NETホスティング権限がありません。
System.Configuration.Provider.ProviderException - ApplicationNameプロパティが、256文字を超える文字列に設定されています。
備考
ApplicationNameプロパティの文字列値は、様々なアプリケーションでのユーザー名とロール名の関連付けに使用されます。複数のアプリケーションが、重複する名前間で競合を発生させずに、同じデータベースを使用してユーザー名とロール名を格納できます。このプロパティは、プログラムで設定するか、Webアプリケーション構成ファイルでapplicationName属性を使用して宣言で設定できます。構成ファイル内の属性名は、大文字と小文字が区別されます。
ApplicationNameプロパティはスレッドセーフではありません。プログラミング・コードでは、ユーザーにWebアプリケーションでのApplicationNameプロパティの設定を許可しないことをお薦めします。
このプロパティは、コマンドが例外で実行を終了するまでに実行可能な秒数を取得します。
宣言
// C#
public int CommandTimeout {get;}
プロパティ値
int
備考
プロバイダをカスタマイズするために、ASP.NET開発者は、commandTimeout属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。
デフォルト値は30秒です。構成ファイル内の属性名は、大文字と小文字が区別されます。
OracleRoleProviderパブリック・メソッドを、表3-7にリストします。
表3-7 OracleRoleProviderパブリック・メソッド
| パブリック・メソッド | 説明 |
|---|---|
|
|
指定されたロールに指定されたユーザーを追加します |
|
|
データベースに新しいロールを追加します |
|
|
データベース内のロールを削除します |
|
|
|
|
|
指定されたユーザー名に一致するユーザー名の配列を戻します |
|
|
アプリケーションのすべてのロールの配列を戻します |
|
|
|
|
|
指定されたユーザーのロール名の配列を戻します |
|
|
|
|
|
指定されたロール名のユーザーの配列を戻します |
|
|
ASP.NETアプリケーション構成ファイルで指定されたプロパティ値で |
|
|
指定されたユーザーが指定されたロールに存在するかどうかを示します |
|
|
指定されたロール名の配列から指定されたユーザーの配列を削除します |
|
|
指定されたロール名がデータベースに存在するかどうかを示します |
|
|
|
このメソッドは、指定されたロールに指定されたユーザーを追加します。
宣言
// C# public override void AddUsersToRoles(string[] userNames, string[] roleNames);
パラメータ
userNames
ロールに追加するユーザー名の配列。
roleNames
ユーザー名を追加するロール名の配列。
例外
ArgumentNullException - userNames内のいずれかのユーザーまたはroleNames内のいずれかのロールがnullです。
ArgumentException - roleNamesまたはuserNamesパラメータが空の文字列であるか、カンマを含むか、256文字を超えているか、重複する要素を含んでいます。
System.Configuration.Provider.ProviderException - 1つ以上のロール名が見つからなかったか、1つ以上のユーザー名がすでに1つ以上のロール名に関連付けられています。
OracleException - Oracle関連のエラーが発生しました。
備考
このメソッドは、1つ以上の指定されたロールに1つ以上のユーザー名を追加します。更新は、トランザクションで実行されます。エラーが発生した場合は、トランザクションがロールバックされ、更新は行われません。
いずれかのユーザー名がデータベースに存在しない場合は、ユーザー名が作成され、データベースに追加されます。
このメソッドは、データベースに新しいロールを追加します。
宣言
// C#
public override void CreateRole(string roleName);
パラメータ
roleName
データベース内で作成されるロール名。
例外
ArgumentNullException - roleNameパラメータがnullです。
ArgumentException - roleNameパラメータが空の文字列であるか、カンマを含むか、または256文字を超えています。
System.Configuration.Provider.ProviderException - ロール名はすでにデータベースに存在します。
OracleException - Oracle関連のエラーが発生しました。
備考
このメソッドは、データベースに新しいロールを作成します。
このメソッドは、データベース内のロールを削除します。
宣言
// C# public override bool DeleteRole(string roleName, bool throwOnPopulatedRole);
パラメータ
roleName
データベースから削除されるロール名。
throwOnPopulatedRole
trueに設定されている場合は、ロールにユーザー名が含まれていると例外の原因となることを示すブール値。値がfalseに設定されている場合は、ロールをデータベースから削除します。
戻り値
指定されたロールが正常に削除された場合はtrueを戻し、それ以外の場合はfalseを戻します。
例外
ArgumentNullException - roleNameパラメータがnullです。
System.Configuration.Provider.ProviderException - ロール名に少なくとも1つのユーザー名が含まれ、throwOnPopulatedRoleパラメータがtrueに設定されています。
OracleException - Oracle関連のエラーが発生しました。
ArgumentException - roleNameパラメータが空の文字列であるか、カンマを含むか、256文字を超えています。
備考
throwOnPopulatedRoleパラメータがfalseに設定されている場合は、指定されたロールにユーザーが含まれているかどうかにかかわらず、そのロールがデータベースから削除されます。throwOnPopulatedRoleパラメータがtrueに設定されている場合は、データベース内の指定されたロールにユーザーが含まれていると、例外がスローされ、ロールは削除されません。
このメソッドは、指定されたロール名について、指定されたユーザー名に一致するユーザー名の配列を戻します。
宣言
// C# public override string[ ] FindUsersInRole(string roleName, string userNameToMatch);
パラメータ
roleName
データベースで検索されるロール名。
userNameToMatch
検索されるユーザー名。
戻り値
指定されたロール内の、指定されたuserNameToMatchパラメータに一致するユーザー名を含む文字列配列。
例外
ArgumentNullException - roleNameまたはuserNameToMatchパラメータがnullです。
OracleException - Oracle関連のエラーが発生しました。
System.Configuration.Provider.ProviderException - ロール名がデータベースに存在しません。
ArgumentException - 次のいずれかの条件が存在します。
roleNameパラメータが空の文字列であるか、カンマが含まれているか、256文字を超えています。
userNameToMatchパラメータが空の文字列であるか、256文字を超えています。
備考
このメソッドは、指定されたロール名について、指定されたユーザー名に一致するユーザー名の配列を戻します。このメソッドでは、Oracleワイルドカード文字がサポートされます。userNameToMatchパラメータが"oraUser%"に設定されている場合は、"oraUser1"、"oraUser2"などのユーザーの配列が戻されます。一方、userNameToMatchパラメータが"oraUser"に設定されている場合は、"oraUser"があればユーザー名"oraUser"のみの配列が戻されます。
このメソッドは、アプリケーションのすべてのロールの配列を戻します。
宣言
// C# public override string[ ] GetAllRoles();
戻り値
アプリケーションに対するデータベース内のすべてのロール名を含む文字列配列。
例外
OracleException - Oracle関連のエラーが発生しました。
このメソッドは、指定されたユーザーのロール名の配列を戻します。
宣言
// C#
public override string[] GetRolesForUser(string userName);
パラメータ
userName
ロール名の配列が戻される対象のユーザー名。
戻り値
指定されたユーザー名のロール名の配列。
例外
ArgumentNullException - userNameパラメータがnullです。
ArgumentException - userNameパラメータがカンマを含むか、256文字を超えています。
OracleException - Oracle関連のエラーが発生しました。
このメソッドは、指定されたロール名のユーザーの配列を戻します。
宣言
// C#
public override string[ ] GetUsersInRole(string roleName);
パラメータ
roleName
ユーザーの配列が戻される対象のロール名。
戻り値
指定されたロール名のユーザー名の配列。
例外
ArgumentNullException - roleNameパラメータがnullです。
OracleException - Oracle関連のエラーが発生しました。
System.Configuration.Provider.ProviderException - ロール名がデータベースに存在しません。
ArgumentException - roleNameパラメータが空の文字列であるか、カンマを含むか、256文字を超えています。
このメソッドは、OracleRoleProviderインスタンスを、ASP.NETアプリケーション構成ファイル(web.config)で指定されたプロパティ値で初期化します。
宣言
// C# public override void Initialize(string name, NameValueCollection config);
パラメータ
name
初期化するOracleRoleProviderインスタンスの名前。
config
ロール・プロバイダの構成オプションの名前と値を含むSystems.Collections.Specialized.NameValueCollectionオブジェクト。
例外
System.Web.HttpException - ASP.NETが中程度以上の信頼レベルで実行されていません。
ArgumentNullException - configパラメータがnullです。
System.Configuration.Provider.ProviderException - connectionStringName属性が空であるか、構成ファイルに存在しません。または、applicationName属性が256文字を超えているか、構成ファイルに無効な属性が含まれています。
備考
Initializeメソッドは、アプリケーションによって直接呼び出されることを意図していません。
このメソッドは、指定されたユーザーが指定されたロール内にあるかどうかを示します。
宣言
// C# public override bool IsUserInRole(string userName, string roleName);
パラメータ
userName
検索されるユーザー名。
roleName
検索されるロール名。
戻り値
指定されたユーザー名が指定されたロール名にある場合はtrueを戻し、それ以外の場合はfalseを戻します。
例外
ArgumentNullException - userNameまたはroleNameパラメータがnullです。
OracleException - Oracle関連のエラーが発生しました。
ArgumentException - 次のいずれかの条件が存在します。
roleNameパラメータが空の文字列であるか、カンマが含まれているか、256文字を超えています。
userNameパラメータにカンマが含まれているか、256文字を超えています。
備考
このメソッドでは、指定されたユーザー名がデータベース内の指定されたロール名に存在するかどうかが判断されます。
このメソッドは、指定されたロール名の配列から指定されたユーザーの配列を削除します。
宣言
// C# public override void RemoveUsersFromRoles(string[] userNames, string[] roleNames);
パラメータ
userNames
ロール名から削除するユーザー名の配列。
roleNames
ユーザー名を削除するロール名の配列。
例外
ArgumentNullException - userNamesパラメータ内のいずれかのユーザーまたはroleNamesパラメータ内のいずれかのロールがnullです。
OracleException - Oracle関連のエラーが発生しました。
System.Configuration.Provider.ProviderException - 1つ以上のロール名またはユーザー名がデータベースに存在しないか、1つ以上のユーザー名がロール名に関連付けられていません。
ArgumentException - roleNamesまたはuserNamesパラメータが空の文字列であるか、カンマを含むか、256文字を超えているか、重複する要素を含んでいます。
備考
このメソッドは、指定されたロール名の配列から指定されたユーザー名の配列を削除します。更新はトランザクション内で行われます。エラーが発生した場合は、トランザクションがロールバックされます。
このメソッドは、指定されたロール名がデータベースに存在するかどうかを示します。
宣言
// C#
public override bool RoleExists(string roleName);
パラメータ
roleName
データベースで検索されるロール名。
戻り値
ロール名が存在する場合はtrueを戻し、それ以外の場合はfalseを戻します。
例外
ArgumentNullException - roleNameパラメータがnullです
OracleException - Oracle関連のエラーが発生しました。
ArgumentException - roleNameパラメータが空の文字列であるか、カンマを含むか、または256文字を超えています。