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.112.2.0, 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
Oracle Providers for ASP.NETのバージョン: Oracle Providers for ASP.NET 2.0およびOracle Providers for ASP.NET 4
次の表に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
静的メソッドを、表3-5にリストします。
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
プロパティの設定を許可しないことをお薦めします。
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文字を超えています。