Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

Adicionando suporte à segurança declarativa

Embora não seja estritamente necessário, uma permissão personalizada deve dar suporte a segurança declarativa para que os desenvolvedores podem especificar a permissão personalizada ao usar a sintaxe declarativa para ações de segurança como, por exemplo, solicitações, demandas ou declarações. Na verdade, solicitações de permissão, demandas, de link e demandas de herança só podem ser feitas declarativamente. Por esse motivo, a sua permissão de acesso de código personalizado não pode ser solicitada ou usado com as demandas de link ou demandas de herança, a menos que você fornece suporte para segurança declarativa. Este tópico descreve como implementar um atributo classe que habilita o suporte de segurança declarativa para a sua permissão personalizada.

Observação Observação

A versão de atributo da permissão personalizada deve ser definida em um conjunto diferente do assembly no qual ele é referenciado. A permissão personalizada também deve ser definida no assembly. Isso é obrigatório para a segurança declarativa, porque o atributo é executado quando o assembly foi carregado e o atributo não pode ter sido criado no momento em que a referência a ele for encontrada. Tentando usar uma permissão declarativa no mesmo assembly no qual ele está definido resulta em um TypeLoadException que está sendo lançada.

Atributos de segurança para declarações precisam derivar (direta ou indiretamente) a SecurityAttribute classe. Se a permissão é uma permissão de acesso ao código, a classe de atributo deriva de CodeAccessSecurityAttribute, que é derivada de SecurityAttribute. Classes de atributo de segurança devem implementar a CreatePermission método, que cria uma instância do objeto de permissão da permissão personalizada associada. Observe que isso associados a classe de permissão personalizada deve ser marcado com o SerializableAttribute para ser serializado em metadados pelo compilador. Para obter mais informações, consulte a implementação de uma permissão personalizada.

O código a seguir implementa uma classe de atributo de permissão booleano chamado CustomPermission. Neste exemplo, a classe de permissão tem um único booleano Unrestricted propriedade que contém o seu estado.

[AttributeUsageAttribute(AttributeTargets.All, AllowMultiple = true)]
public class CustomPermissionAttribute: CodeAccessSecurityAttribute
{
   bool unrestricted = false;

   public new bool Unrestricted
   {
      get{ return unrestricted; }
      set{ unrestricted = value; }
   }

   public CustomPermissionAttribute(SecurityAction action): base (action)
   {  
   }
   public override IPermission CreatePermission()
   {
      if(Unrestricted)
      {
         return new CustomPermission(PermissionState.Unrestricted);
      }
      else
      {
         return new CustomPermission(PermissionState.None);
      }
   }
}

Nesse caso, CreatePermission verifica o interno Unrestricted propriedade e cria a instância apropriada de um CustomPermission objeto. Embora apenas o Unrestricted propriedade é usada neste caso, outras classes de atributo de permissão personalizada devem oferecer suporte a todos os estados possíveis dos objetos de permissão que eles suportam.

O uso de CustomPermissionAttribute é ilustrada na seguinte declaração demanda:

[CustomPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.