執行宣告式安全性檢查
PrincipalPermission 的宣告式要求與程式碼存取使用權限的宣告式要求作用相同。 要求不但可以放在類別層級,而且可以放在個別的方法、屬性或事件上。 如果類別和成員層級都放置宣告式要求,成員上的宣告式要求將覆寫 (或取代) 類別層級上的要求。
下列程式碼範例示範前面章節範例中 PrivateInfo 方法的修改版本。 這個版本使用宣告式安全性。 PrincipalPermissionAttribute 定義目前執行緒必須擁有來叫用 (Invoke) 方法的主體。 只要以您需要的名稱和角色傳遞 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!