执行声明式安全检查

更新:2007 年 11 月

PrincipalPermission 的声明式请求的工作方式与代码访问权限的声明式请求相同。请求既可放在类级别上,也可放在个别方法、属性或事件上。如果声明式请求同时放在类级别和成员级别上,则成员上的声明式请求将覆盖(或取代)类级别上的请求。

下面的代码示例显示了前一节示例中的 PrivateInfo 方法经过修改后的版本。此版本使用声明式安全性。PrincipalPermissionAttribute 定义当前线程在调用方法时必须具有的主体。仅用所需的名称和角色传递 SecurityAction.Demand

      [PrincipalPermissionAttribute(SecurityAction.Demand, Name = "MyUser", Role = "User")]
      public static void PrivateInfo()
      {   
         //Print secret data.
         Console.WriteLine("\n\nYou have access to the private data!");
      }
    Public Shared Sub _
    <PrincipalPermissionAttribute(SecurityAction.Demand, Name := "MyUser", Role := "User")> _
    PrivateInfo()
    
        'Print secret data.
        Console.WriteLine(ControlChars.CrLf + "You have access to the private data!")
    End Sub

如果当前线程不包含正确的主体,此方法将引发安全异常。如果用户输入 1,则将调用 PrivateInfo 方法,并将下面的消息显示到控制台。

You have access to the private data!

请参见

概念

基于角色的安全检查

参考

PrincipalPermission