Partager via


Utilisation de la méthode PermitOnly

Mise à jour : novembre 2007

L'appel à PermitOnly a principalement le même effet que l'appel à Deny mais est une façon différente permettant de spécifier les conditions dans lesquelles la vérification de sécurité doit échouer. Au lieu de dire qu'une ressource spécifiée n'est pas accessible, comme le fait Deny, PermitOnly dit que seules les ressources que vous spécifiez sont accessibles. Par conséquent, l'appel de PermitOnly sur autorisation X équivaut à appeler Deny sur toutes les autorisations sauf l'autorisation X. Si vous appelez PermitOnly, votre code peut être utilisé pour accéder uniquement aux ressources protégées par les autorisations que vous spécifiez lorsque vous appelez PermitOnly. Vous utilisez PermitOnly au lieu de Deny lorsqu'il est plus pratique de décrire les ressources qui sont accessibles que celles qui ne le sont pas.

Si votre code appelle PermitOnly sur une autorisation P1 et si les appelants en aval demandent alors l'autorisation P2, l'appel à PermitOnly affecte le résultat de la pile des appels uniquement si P1 et P2 sont de types différents et si P2 n'est pas un sous-ensemble de P1.

Les fragments de code suivants illustrent la syntaxe déclarative de substitution des vérifications de sécurité à l'aide de PermitOnly. Les appelants ne peuvent pas utiliser ce code pour accéder aux ressources protégées, excepté aux ressources interface utilisateur. .

Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
   Public Sub New()
   End Sub   
   <UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted := True)> Public Sub 
   ReadRegistry()
      'Access a UI resource.
   End Sub
End Class
using System;
using System.Security.Permissions;

public class MyClass
{
   public MyClass() {    
   }   
   
   [UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted=true)]
   public void ReadRegistry() { 
      //Access a UI resource.
   }  
}

L'exemple de code suivant illustre la syntaxe impérative de substitution des vérifications de sécurité à l'aide de la méthode PermitOnly. Un objet PermissionState qui spécifie les ressources interface utilisateur auxquelles l'accès doit être accordé, est passé au constructeur UIPermission. Une fois la méthode PermitOnly appelée, le code et les appelants peuvent uniquement être utilisés pour accéder aux ressources interface utilisateur.

Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
   Public Sub New()
   End Sub
   Public Sub ReadRegistry()
      Dim MyPermission As New UIPermission(PermissionState.Unrestricted)
      MyPermission.PermitOnly()
      'Access a UI resource.
   End Sub 
End Class
using System;
using System.Security.Permissions;

public class MyClass {
   public MyClass() {    
   }   
   public void ReadRegistry() { 
      UIPermission MyPermission = new UIPermission(PermissionState.Unrestricted);
      MyPermission.PermitOnly();
      //Access a UI resource.
   }  
}

Voir aussi

Concepts

Substitution des vérifications de sécurité

Référence

Utilisation de la méthode Deny

PermissionState

Autres ressources

Extension des métadonnées à l'aide des attributs

Sécurité d'accès du code