Exécution de contrôles de sécurité déclaratifs
Les demandes déclaratives de PrincipalPermission sont effectuées de la même façon que les demandes déclaratives pour les autorisations d'accès au code. Les demandes peuvent être effectuées tant au niveau des classes que sur des méthodes, des propriétés ou des événements individuels. Si une demande déclarative est placée à la fois au niveau de la classe et du membre, la demande sur le membre se substitue à la demande au niveau de la classe (ou la remplace).
L'exemple de code suivant montre une version modifiée de la méthode PrivateInfo
présentée dans l'exemple précédent. Cette version utilise la sécurité déclarative. Le PrincipalPermissionAttribute définit l'entité de sécurité que le thread en cours doit avoir pour appeler la méthode. Il vous suffit de passer SecurityAction.Demand avec le nom et le rôle requis.
[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
Cette méthode lève une exception de sécurité si le thread en cours ne contient pas l'entité de sécurité appropriée. Si l'utilisateur entre 1
, la méthode PrivateInfo
est appelée et le message suivant s'affiche dans la console.
You have access to the private data!