Share via


PrincipalPermissionAttribute 类

允许对使用声明安全性应用到代码中的 PrincipalPermission 进行安全操作。无法继承此类。

**命名空间:**System.Security.Permissions
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple:=True, Inherited:=False)> _
Public NotInheritable Class PrincipalPermissionAttribute
    Inherits CodeAccessSecurityAttribute
用法
Dim instance As PrincipalPermissionAttribute
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false)] 
public sealed class PrincipalPermissionAttribute : CodeAccessSecurityAttribute
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple=true, Inherited=false)] 
public ref class PrincipalPermissionAttribute sealed : public CodeAccessSecurityAttribute
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false) */ 
public final class PrincipalPermissionAttribute extends CodeAccessSecurityAttribute
SerializableAttribute 
ComVisibleAttribute(true) 
AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple=true, Inherited=false) 
public final class PrincipalPermissionAttribute extends CodeAccessSecurityAttribute

备注

PrincipalPermissionAttribute 可用于以声明方式要求运行您的代码的用户属于指定的角色或者已经过身份验证。使用 Unrestricted 将创建 Authenticated 设置为 trueNameRole 设置为 空引用(在 Visual Basic 中为 Nothing) 的 PrincipalPermission

允许的声明范围取决于所使用的 SecurityActionPrincipalPermissionAttribute 不能应用于程序集级别上。

安全属性所声明的安全信息存储在属性目标的元数据中,系统在运行时会访问这些信息。安全属性仅用于声明性安全。对于强制性安全,应使用相应的权限类。

重要   在要求主体权限之前,有必要将当前应用程序域的主体策略设置为枚举值 WindowsPrincipal。默认情况下,主体策略设置为 UnauthenticatedPrincipal。如果未将主体策略设置为 WindowsPrincipal,则要求主体权限会失败。在要求主体权限之前应执行以下代码:AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

示例

下面的示例说明可以如何以声明方式使用 PrincipalPermission 要求当前用户是 Bob 并且属于 Supervisor 角色。

<PrincipalPermissionAttribute(SecurityAction.Demand, _
 Name := "Bob", Role := "Supervisor")> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Name="Bob",
Role="Supervisor")]
[PrincipalPermissionAttribute(SecurityAction::Demand,Name="Bob",
Role="Supervisor")]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand,
    Name = "Bob", Role = "Supervisor")
 */

下面的示例说明如何要求当前用户的身份是 Bob,与角色成员条件无关。

<PrincipalPermissionAttribute(SecurityAction.Demand, _
 Name := "Bob")> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Name="Bob")]
[PrincipalPermissionAttribute(SecurityAction::Demand,Name="Bob")]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Bob")
 */

下面的示例说明如何仅要求对用户进行身份验证。

<PrincipalPermissionAttribute(SecurityAction.Demand, _
 Authenticated := True)> Public Class SampleClass
[PrincipalPermissionAttribute(SecurityAction.Demand, Authenticated=true)]
[PrincipalPermissionAttribute(SecurityAction::Demand,Authenticated=true)]
/** @attribute PrincipalPermissionAttribute(SecurityAction.Demand, 
    Authenticated = true)
 */

继承层次结构

System.Object
   System.Attribute
     System.Security.Permissions.SecurityAttribute
       System.Security.Permissions.CodeAccessSecurityAttribute
        System.Security.Permissions.PrincipalPermissionAttribute

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

PrincipalPermissionAttribute 成员
System.Security.Permissions 命名空间
PrincipalPermission 类

其他资源

利用属性扩展元数据
主体