선언적 보안 검사 수행
업데이트: 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
현재 스레드에 올바른 보안 주체가 없을 경우 이 메서드는 보안 예외를 throw합니다. 사용자가 1을 입력하면 PrivateInfo 메서드가 호출되고 콘솔에 다음 메시지가 표시됩니다.
You have access to the private data!