Share via


Segurança imperativa

Sintaxe de segurança imperativa emite uma chamada de segurança, criando uma nova instância do objeto de permissão que você deseja chamar. Você pode usar a sintaxe imperativa para realizar demandas e substituições, mas não a solicitações.

Antes de fazer a segurança de chamada, você deve inicializar os dados do estado do objeto de permissão para que ele representa um determinado formulário da permissão que você precisa. Por exemplo, ao criar um FileIOPermission o objeto, você pode usar o construtor para inicializar o FileIOPermission para que ele representa acesso irrestrito a todos os arquivos ou sem acesso aos arquivos de objeto. Ou, você pode usar um FileIOPermission objeto, passando parâmetros que indicam o tipo de acesso que você deseja que o objeto para representar (isto é, ler, acrescentar ou gravar) e arquivos que deseja que o objeto para proteger.

Para além de usando a sintaxe de segurança imperativa para invocar um objeto de segurança único, você pode usá-lo inicializar de um grupo de permissões chamado um conjunto de permissões. Por exemplo, essa técnica é a única maneira de executar com confiança assert chama em várias permissões em um método. Use o PermissionSet e NamedPermissionSet classes para criar um grupo de permissões e, em seguida, chamar o método apropriado para invocar a chamada de segurança desejado.

Você pode usar a sintaxe imperativa para realizar demandas e substituições, mas não a solicitações. Você pode usar a sintaxe imperativa para demandas e substitui em vez da sintaxe declarativa quando as informações necessárias inicializar o estado de permissão se torna conhecidas somente em tempo de execução. Por exemplo, se você deseja garantir que os chamadores têm permissão para ler um determinado arquivo, mas você não souber o nome desse arquivo até o tempo de execução, use uma demanda imperativa. Você também pode optar por usar verificações imperativas em vez de verificações declarativas, quando você precisa determinar o tempo de execução se uma condição de guarda e, com base no resultado do teste, faça uma demanda de segurança (ou não).

O fragmento de código a seguir mostra a sintaxe imperativa para solicitar que os chamadores do seu código tenham uma permissão personalizada chamada MyPermission. Esta permissão é uma permissão personalizada hipotética e não existe na.NET Framework. Uma nova instância de MyPermision é criado em MyMethod, preservando apenas esse método com a chamada de segurança.

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

Consulte também

Referência

FileIOPermission

Classe de SystemSecurityPermissionSet

NamedPermissionSet

Conceitos

Sintaxe de segurança

Segurança de Acesso de código

O Conjunto de permissão nomeada

Usando o método de declaração