Partager via


Sécurité impérative

La syntaxe de sécurité impérative émet un appel de sécurité en créant une nouvelle instance de l'objet d'autorisation que vous souhaitez appeler. Vous pouvez utiliser la syntaxe impérative pour effectuer des exigences et des substitutions mais pas des demandes.

Avant de procéder à l'appel de sécurité, vous devez initialiser les données d'état de l'objet d'autorisation de sorte qu'elles représentent la forme particulière de l'autorisation dont vous avez besoin. Par exemple, lors de la création d'un objet FileIOPermission, vous pouvez utiliser le constructeur pour initialiser l'objet FileIOPermission de sorte qu'il représente un accès non limité à tous les fichiers ou aucun accès aux fichiers. Ou vous pouvez utiliser un objet FileIOPermission différent, en passant les paramètres indiquant le type d'accès que vous souhaitez que l'objet représente (c'est-à-dire lire, ajouter ou écrire) et les fichiers que vous souhaitez que l'objet protège.

En plus de l'utilisation de la syntaxe de sécurité impérative pour appeler un objet de sécurité unique, vous pouvez l'utiliser pour initialiser un groupe d'autorisations appelé jeu d'autorisations. Par exemple, cette technique est la seule façon d'effectuer de manière fiable des appels assert sur plusieurs autorisations d'une méthode. Utilisez les classes PermissionSet et NamedPermissionSet pour créer un groupe d'autorisations puis appelez la méthode appropriée pour appeler l'appel de sécurité souhaité.

Vous pouvez utiliser la syntaxe impérative pour effectuer des exigences et des substitutions mais pas des demandes. Vous pouvez éventuellement utiliser la syntaxe impérative à la place de la syntaxe déclarative pour les exigences et les substitutions lorsque les informations dont vous avez besoin pour initialiser l'état d'autorisation ne sont connues qu'au moment de l'exécution. Par exemple, si vous souhaitez vous assurer que les appelants ont l'autorisation de lire un certain fichier mais que vous ne connaissez pas le nom du fichier avant l'exécution, utilisez une exigence impérative. Vous pouvez aussi éventuellement choisir d'utiliser des vérifications impératives au lieu de vérifications déclaratives lorsque vous avez besoin de déterminer si une condition est valable ou non au moment de l'exécution et, en fonction du résultat du test, de procéder (ou non) à une demande de sécurité.

Le fragment de code suivant illustre la syntaxe impérative permettant de demander que les appelants de votre code aient une autorisation personnalisée appelée MyPermission. Cette autorisation est une autorisation personnalisée hypothétique et n'existe pas dans le .NET Framework. Une nouvelle instance de MyPermision est créée dans MyMethod, protégeant uniquement cette méthode avec l'appel de sécurité.

Public Class MyClass1
   
   Public Sub New()

   End Sub
   
   Public Sub MyMethod()
      'MyPermission is demanded using imperative syntax.
      Dim Perm As New MyPermission()
      Perm.Demand()
      'This method is protected by the security call.
   End Sub
   
   Public Sub YourMethod()
      'YourMethod 'This method is not protected by the security call.
   End Sub
End Class
public class MyClass {
   public MyClass(){
    
   }

   public void MyMethod() {
       //MyPermission is demanded using imperative syntax.
       MyPermission Perm = new MyPermission();
       Perm.Demand();
       //This method is protected by the security call.
   }

   public void YourMethod() {
       //This method is not protected by the security call.
   }
}

Voir aussi

Référence

FileIOPermission
SystemSecurityPermissionSet Class
NamedPermissionSet Class

Concepts

Syntaxe de sécurité
Jeux d'autorisations nommés
Utilisation de la méthode Assert

Autres ressources

Sécurité d'accès du code