Sdílet prostřednictvím


Imperativní zabezpečení

Imperativní syntaxe pro zabezpečení řeší volání zabezpečení vytvořením nové instance objektu oprávnění, který chcete vyvolat. Můžete použít imperativní syntaxi k vykonání požadavků a přepisování ale ne požadavků.

Před provedením volání zabezpečení je nutné inicializovat data o stavu objektu oprávnění tak, aby představovala určitou formu oprávnění, kterou potřebujete. Například když vytváříte objekt FileIOPermission můžete použít konstruktor pro inicializaci objektu FileIOPermission tak, aby představoval buď neomezený přístup ke všem souborům nebo žádný přístup k souborům. Nebo můžete použít jiný objekt FileIOPermission předáním parametrů, které označují typ přístupu, který chcete, aby objekt představoval (to znamená čtení, připojení nebo zápis) a jaké soubory chcete, aby objekt chránil.

Vedle používání imperativní syntaxe zabezpečení pro vyvolání jediného objektu zabezpečení, můžete tuto syntaxi také použít pro inicializaci skupiny oprávnění nazvané permission set. Například tato technika je jediným způsobem, jak spolehlivě provádět volání metody assert na více oprávnění v jedné metodě. Pro vytvoření skupiny oprávnění použijte třídy PermissionSet a NamedPermissionSet a poté volejte vhodnou metodu pro vyvolání požadovaného volání zabezpečení.

Můžete použít imperativní syntaxi k vykonání požadavků a přepisování ale ne požadavků. Možná používáte imperativní syntaxi pro požadavky a přepsání místo deklarativní syntaxe, když informace, které potřebujete z důvodu inicializace stavu oprávnění jsou známy pouze v době běhu. Například, pokud chcete zajistit, aby volající měli oprávnění ke čtení určitého souboru, ale až do spuštění neznáte název daného souboru, proto použijete imperativní požadavek. Můžete také zvolit použití imperativních kontrol místo deklarativních, když v době běhu potřebujete určit, zda obsahuje podmínku a na základě výsledku testu vytvořit požadavek zabezpečení (nebo ne).

Následující fragment kódu ukazuje imperativní syntaxi pro vyžádání, že volající vašeho kódu mají vlastní oprávnění nazývané MyPermission. Toto oprávnění je hypotetické vlastní oprávnění a neexistuje v rozhraní .NET Framework. Nová instance MyPermision je vytvořena v MyMethod, ta pouze hlídá tuto metodu pomocí volání zabezpečení.

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

Viz také

Odkaz

FileIOPermission

Třída SystemSecurityPermissionSet

NamedPermissionSet

Koncepty

Syntaxe zabezpečení

Zabezpečení přístupu kódu

Pojmenované sady oprávnění

Použití metody Assert