Deklarative Sicherheit

Aktualisiert: November 2007

Bei der deklarativen Sicherheitssyntax werden Sicherheitsinformationen mithilfe von Attributen in die Metadaten des Codes geschrieben. Attribute können auf der Assembly-, Klassen- oder Memberebene platziert werden, um den Typ der gewünschten Anforderung, Forderung oder Überschreibung anzugeben. Mithilfe von Anforderungen wird in Anwendungen für die Common Language Runtime das Sicherheitssystem der Laufzeit über die Berechtigungen informiert, die für die Anwendung benötigt bzw. nicht gewünscht werden. Durch Forderungen und Überschreibungen werden in Bibliotheken Ressourcen vor Aufrufern geschützt bzw. das Standardsicherheitsverhalten wird überschrieben.

Wenn Sie deklarative Sicherheitsaufrufe verwenden möchten, müssen Sie die Zustandsdaten des Berechtigungsobjekts initialisieren, sodass es die bestimmte Form der benötigten Berechtigung darstellt. Jede integrierte Berechtigung verfügt über ein Attribut, dem eine SecurityAction-Enumeration übergeben wird, um die Art der auszuführenden Sicherheitsoperation zu beschreiben. Berechtigungen akzeptieren jedoch auch eigene Parameter, die ihnen exklusiv zugewiesen sind. Eine vollständige Beschreibung der spezifischen Parameter für Berechtigungen finden Sie im Abschnitt über integrierte Berechtigungen.

Das folgende Codefragment veranschaulicht deklarative Syntax, mit der angefordert wird, dass die Aufrufer des Codes über die benutzerdefinierte Berechtigung MyPermission verfügen. Dies ist eine hypothetische benutzerdefinierte Berechtigung, die in .NET Framework nicht vorhanden ist. In diesem Beispiel wird der deklarative Aufruf direkt vor der Klassendefinition platziert, wodurch angegeben wird, dass diese Berechtigung auf die Klassenebene angewendet wird. Durch Übergeben einer SecurityAction.Demand-Struktur an das Attribut wird angegeben, dass Aufrufer für die Ausführung über diese Berechtigung verfügen müssen.

[MyPermission(SecurityAction.Demand, Unrestricted = true)]
public class MyClass
{
   public MyClass()
   {
      //The constructor is protected by the security call.
   }

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

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

Community-Beiträge

Anzeigen: