Imperative Sicherheit
Die imperative Sicherheitssyntax gibt einen Sicherheitsaufruf aus, indem eine neue Instanz des aufzurufenden Berechtigungsobjekts erstellt wird. Mit imperativer Syntax können Sie Forderungen und Außerkraftsetzungen, jedoch keine Anforderungen ausführen.
Bevor Sie einen Sicherheitsaufruf vornehmen, müssen Sie die Zustandsdaten des Berechtigungsobjekts initialisieren, sodass es die bestimmte Form der benötigten Berechtigung darstellt. Sie können z. B. beim Erstellen eines FileIOPermission-Objekts den Konstruktor zum Initialisieren verwenden, sodass das Objekt entweder uneingeschränkten Zugriff auf alle Dateien oder keinen Zugriff auf Dateien darstellt. Sie können auch ein anderes FileIOPermission-Objekt verwenden, das Parameter übergibt, die die vom Objekt darzustellende Zugriffsart, d. h. Lesen, Anfügen oder Schreiben, oder die Dateien angibt, die vom Objekt geschützt werden sollen.
Neben dem Aufrufen eines einzelnen Sicherheitsobjekts können Sie die imperative Sicherheitssyntax auch dazu verwenden, eine Gruppe von Berechtigungen zu initialisieren, die als benannter Berechtigungssatz bezeichnet wird. Dieses Verfahren ist z. B. die einzige verlässliche Möglichkeit zum Ausführen von Assert-Aufrufen für mehrere Berechtigungen in einer Methode. Erstellen Sie mit der PermissionSet-Klasse und der NamedPermissionSet-Klasse eine Gruppe von Berechtigungen, und rufen Sie anschließend die entsprechende Methode auf, um den gewünschten Sicherheitsaufruf auszuführen.
Mit imperativer Syntax können Sie Forderungen und Außerkraftsetzungen, jedoch keine Anforderungen ausführen. Sie können imperative Syntax anstelle von deklarativer Syntax für Forderungen und Außerkraftsetzungen verwenden, wenn die erforderlichen Informationen zum Initialisieren des Berechtigungszustands erst zur Laufzeit bekannt werden. Wenn Sie z. B. sicherstellen möchten, dass Aufrufer über die Berechtigung zum Lesen einer bestimmten Datei verfügen, Ihnen der Name der betreffenden Datei jedoch erst zur Laufzeit bekannt wird, verwenden Sie eine imperative Forderung. Sie können sich anstelle deklarativer Überprüfungen auch für imperative Überprüfungen entscheiden, wenn Sie zur Laufzeit bestimmen müssen, ob eine Bedingung eingehalten wird. Auf der Grundlage des Testergebnisses können Sie dann ggf. eine Sicherheitsforderung vornehmen.
Das folgende Codefragment veranschaulicht die imperative Syntax, mit der angefordert wird, dass die Aufrufer des Codes über die benutzerdefinierte Berechtigung MyPermission
verfügen müssen. Dies ist eine hypothetische benutzerdefinierte Berechtigung, die in .NET Framework nicht vorhanden ist. In MyMethod
wird eine neue Instanz von MyPermission
erstellt, die ausschließlich diese Methode mit dem Sicherheitsaufruf schützt.
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.
}
}
Siehe auch
Referenz
FileIOPermission
SystemSecurityPermissionSet Class
NamedPermissionSet Class
Konzepte
Sicherheitssyntax
Benannte Berechtigungssätze
Verwenden der Assert-Methode