Verwenden der PermitOnly-Methode

Aktualisiert: November 2007

Das Aufrufen von PermitOnly entspricht im Prinzip dem Aufrufen von Deny, die Bedingungen, unter denen die Sicherheitsüberprüfung fehlschlagen soll, werden jedoch anders angegeben. Anstatt wie für Deny festzulegen, dass der Zugriff auf eine angegebene Ressource nicht möglich ist, wird durch PermitOnly angegeben, dass nur der Zugriff auf die angegebenen Ressourcen möglich ist. Aus diesem Grunde entspricht das Aufrufen von PermitOnly für Berechtigung X dem Aufrufen von Deny für sämtliche Berechtigungen mit Ausnahme von Berechtigung X. Wenn Sie PermitOnly aufrufen, kann mit dem Code lediglich auf die Ressourcen zugegriffen werden, die von den Berechtigungen geschützt werden, die beim Aufrufen von PermitOnly angegeben wurden. Verwenden Sie PermitOnly anstelle von Deny, wenn die Ressourcen, auf die der Zugriff möglich ist, einfacher angegeben werden können als die Ressourcen, bei denen der Zugriff unzulässig ist.

Wenn der Code PermitOnly für Berechtigung B1 aufruft und nachgeschaltete Aufrufer einen Demand für Berechtigung B2 aufrufen, wirkt sich der Aufruf von PermitOnly nur dann auf das Ergebnis des Stackwalks aus, wenn B1 und B2 verschiedene Typen sind und B2 keine Teilmenge von B1 ist.

Die folgenden Codefragmente veranschaulichen die deklarative Syntax für das Überschreiben von Sicherheitsüberprüfungen mithilfe von PermitOnly. Aufrufer können mit diesem Code, abgesehen von den Ressourcen der Benutzeroberfläche, nicht auf geschützte Ressourcen zugreifen. .

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.
   }  
}

Das folgende Beispiel veranschaulicht die imperative Syntax für das Überschreiben von Sicherheitsüberprüfungen mithilfe der PermitOnly-Methode. Dem UIPermission-Konstruktor wird ein PermissionState-Objekt übergeben, das die Ressourcen der Benutzeroberfläche angibt, auf die Zugriff gewährt werden soll. Nach dem Aufrufen der PermitOnly-Methode kann mit dem Code und allen Aufrufern lediglich auf die Ressourcen der Benutzeroberfläche zugegriffen werden.

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.
   }  
}

Siehe auch

Konzepte

Überschreiben von Sicherheitsüberprüfungen

Referenz

Verwenden der Deny-Methode

PermissionState

Weitere Ressourcen

Erweitern von Metadaten mithilfe von Attributen

Codezugriffssicherheit