Share via


Esecuzione di controlli di sicurezza dichiarativi

Le richieste dichiarative di PrincipalPermission funzionano in modo analogo alle richieste dichiarative delle autorizzazioni di accesso al codice. Le pretese possono essere applicate a livello di classe nonché su singoli metodi, proprietà o eventi. Se una pretesa dichiarativa viene generata sia a livello di classe che a livello di membro, la pretesa dichiarativa generata a livello di membro avrà la precedenza (o sostituirà) sulla pretesa a livello di classe.

L'esempio di codice che segue illustra una versione modificata del metodo PrivateInfo utilizzato nell'esempio della sezione precedente. Questa versione utilizza la sicurezza dichiarativa. L'attributo PrincipalPermissionAttribute definisce l'oggetto Principal di cui il thread corrente deve disporre per richiamare il metodo. Passare semplicemente SecurityAction.Demand con il nome e il ruolo richiesti.

      [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

Questo metodo genera un'eccezione di sicurezza se il thread corrente non contiene il principale adatto. Se l'utente digita 1, verrà richiamato il metodo PrivateInfo e sulla console verrà visualizzato il messaggio riportato di seguito.

You have access to the private data!

Vedere anche

Riferimenti

PrincipalPermission

Concetti

Controlli della sicurezza basata sui ruoli