Usando o método PermitOnly
Chamando PermitOnly tem essencialmente o mesmo efeito que a chamada Deny , mas é uma maneira diferente de especificar as condições sob as quais a verificação de segurança deve falhar. Em vez de dizer que um recurso especificado não pode ser acessado, como Negar faz, PermitOnly diz que somente os recursos que você especificar podem ser acessados. Portanto, chamar PermitOnly permissão x é a mesma chamada Negar em todas as permissões, exceto permissão X. Se você chamar PermitOnly, seu código pode ser usado para acessar somente os recursos protegidos por permissões que você especificar ao chamar PermitOnly. Você pode usar PermitOnly em vez de Negar quando for mais conveniente descrever os recursos que podem ser acessados em vez de recursos não podem ser acessados.
Observação
No .NET Framework versão 4, o suporte de tempo de execução foi removido para impor a Deny, RequestMinimum, RequestOptional, e RequestRefuse as solicitações de permissão.Essas solicitações não devem ser usadas no código que se baseia o .NET Framework 4 ou posterior.Para obter mais informações sobre esta e outras alterações, consulte Alterações de segurança na.NET Framework 4.
Se seu código chama PermitOnly em uma permissão P1 e chamadores downstream e permissão de demanda P2, o PermitOnly chamada afeta o resultado do exame da pilha somente se P1 e P2 são de tipos diferentes e P2 não é um subconjunto de P1.
Os fragmentos de código a seguir mostram a sintaxe declarativa para verificações de segurança de substituição usando PermitOnly. Os chamadores não podem usar esse código para acessar recursos protegidos, exceto os recursos de interface de usuário. .
Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
Public Sub New()
End Sub
<UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted := True)> Public Sub
ReadRegistry()
'Access a UI resource.
End Sub
End Class
using System;
using System.Security.Permissions;
public class MyClass
{
public MyClass() {
}
[UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted=true)]
public void ReadRegistry() {
//Access a UI resource.
}
}
O exemplo de código a seguir mostra a sintaxe imperativa para verificações de segurança de substituição usando o PermitOnly método. O UIPermission construtor é passado um PermissionState o objeto que especifica os recursos de interface de usuário ao qual o acesso está a ser concedido. Uma vez o PermitOnly método é chamado, o código e todos os chamadores que podem ser usados somente para acessar os recursos de interface do usuário.
Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
Public Sub New()
End Sub
Public Sub ReadRegistry()
Dim MyPermission As New UIPermission(PermissionState.Unrestricted)
MyPermission.PermitOnly()
'Access a UI resource.
End Sub
End Class
using System;
using System.Security.Permissions;
public class MyClass {
public MyClass() {
}
public void ReadRegistry() {
UIPermission MyPermission = new UIPermission(PermissionState.Unrestricted);
MyPermission.PermitOnly();
//Access a UI resource.
}
}
Consulte também
Referência
Conceitos
Estendendo metadados usando atributos