Freigeben über


Verwenden der PermitOnly-Methode

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. Daher ist das Aufrufen von PermitOnly für Berechtigung X dasselbe wie ein Aufruf von Deny für alle Berechtigungen außer Berechtigung X. Wenn Sie PermitOnly aufrufen, kann der Code nur auf die Ressourcen zugreifen, die von Berechtigungen geschützt werden, die Sie beim Aufruf von PermitOnly angegeben haben. 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.

Hinweis

In .NET Framework 4 wurde die Laufzeitunterstützung für die Erzwingung von Anforderungen für die Berechtigungen Deny, RequestMinimum, RequestOptional und RequestRefuse entfernt.Diese Anforderungen sollten nicht in Code verwendet werden, der auf .NET Framework 4 oder höher basiert.Weitere Informationen über diese und andere Änderungen finden Sie unter Änderungen der Sicherheit in .NET Framework.

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

Referenz

Verwenden der Deny-Methode

PermissionState

Konzepte

Überschreiben von Sicherheitsüberprüfungen

Weitere Ressourcen

Erweitern von Metadaten mithilfe von Attributen

Codezugriffssicherheit