次の方法で共有


PrincipalPermission クラス

宣言セキュリティ アクションと強制セキュリティ アクションの両方のために定義された言語構成要素を使用して、アクティブ プリンシパル (IPrincipal のトピックを参照) をチェックできるようにします。このクラスは継承できません。

この型のすべてのメンバの一覧については、PrincipalPermission メンバ を参照してください。

System.Object
   System.Security.Permissions.PrincipalPermission

<Serializable>
NotInheritable Public Class PrincipalPermission   Implements IPermission, ISecurityEncodable, _   IUnrestrictedPermission
[C#]
[Serializable]
public sealed class PrincipalPermission : IPermission,   ISecurityEncodable, IUnrestrictedPermission
[C++]
[Serializable]
public __gc __sealed class PrincipalPermission : public   IPermission, ISecurityEncodable, IUnrestrictedPermission
[JScript]
public
   Serializable
class PrincipalPermission implements IPermission,   ISecurityEncodable, IUnrestrictedPermission

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

コンストラクタにユーザー名とロールの ID 情報を渡すことにより、 PrincipalPermission を使用して、この情報と一致するアクティブ プリンシパルの ID を要求できます。

アクティブ IPrincipal および関連付けられた IIdentity と一致するためには、指定した ID とロールの両方が一致する必要があります。 null 参照 (Visual Basic では Nothing) ID 文字列を使用する場合は、すべての ID と一致する要求として解釈されます。 null 参照 (Nothing) ロール文字列を使用すると、すべてのロールと一致します。このため、 name または role の null 参照 (Nothing) パラメータを PrincipalPermission に渡すと、すべての IPrincipal の ID とロールに一致します。 IIdentity が認証されたエンティティまたは認証されていないエンティティのどちらを表しているかを判断するだけの PrincipalPermission も構築できます。この場合、 namerole は無視されます。

その他のほとんどのアクセス許可とは異なり、 PrincipalPermission は、 CodeAccessPermission を拡張しません。ただし、これは IPermission インターフェイスを実装します。これは、 PrincipalPermission が、コードのアクセス許可ではないためです。つまり、このアクセス許可は、実行しているアセンブリの ID に基づいて与えられるものではありません。その代わりに、コード アクセスとコード ID アクセス許可で実行する場合と一貫した方法で、現在のユーザー ID に対して、操作 (DemandUnionIntersect など) を実行することをコードに許可します。

使用例

[Visual Basic, C#, C++] 2 人の異なる管理者権限を持つユーザーを表す 2 つの PrincipalPermission オブジェクトを作成し、2 つの和集合を形成して、要求を行う例を次に示します。 Demand は、アクティブな IPrincipal の実装が、マネージャのロールを持つユーザー Bob、またはスーパバイザのロールを持つユーザー Louise のいずれかを表す場合にだけ成功します。

 
Dim id1 As String = "Bob"
Dim role1 As String = "Manager"
Dim PrincipalPerm1 As New PrincipalPermission(id1, role1)
       
Dim id2 As String = "Louise"
Dim role2 As String = "Supervisor"
Dim PrincipalPerm2 As New PrincipalPermission(id2, role2)
       
PrincipalPerm1.Union(PrincipalPerm2).Demand()

[C#] 
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission PrincipalPerm1 = new PrincipalPermission(id1, role1);

String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission PrincipalPerm2 = new PrincipalPermission(id2, role2);

(PrincipalPerm1.Union(PrincipalPerm2)).Demand();

[C++] 
String* id1 = S"Bob";
String* role1 = S"Manager";
PrincipalPermission* PrincipalPerm1 = new PrincipalPermission(id1, role1);

String* id2 = S"Louise";
String* role2 = S"Supervisor";
PrincipalPermission* PrincipalPerm2 = new PrincipalPermission(id2, role2);

(PrincipalPerm1->Union(PrincipalPerm2))->Demand();

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Security.Permissions

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

PrincipalPermission メンバ | System.Security.Permissions 名前空間 | アクセス許可 | アクセス許可の要求 | プリンシパル | PrincipalPermissionAttribute