Compartilhar via


CodeAccessPermission.PermitOnly Método

Definição

Impede que os chamadores no topo da pilha de chamadas usem o código que chama esse método para acessar todos os recursos, com exceção do recurso especificado pela instância atual.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Implementações

Exceções

Já existe um PermitOnly() ativo para o quadro atual.

Comentários

Importante

O PermitOnly método deve ser usado apenas para proteger recursos contra acesso acidental por código totalmente confiável. Ele não deve ser usado para proteger os recursos contra uso indevido intencional por código não confiável. Por exemplo, se o método A emitir um PermitOnly para uma permissão e, em seguida, chamar o método B, o método B poderá substituir PermitOnly o emitindo um Assert. O método chamado é sempre mais alto na pilha. Portanto, se o método B tentar acessar um recurso protegido, o sistema de segurança começará a verificar se há permissões com ele porque o método B é o chamador imediato e, em seguida, desce a pilha para confirmar que não há nenhuma Deny ou PermitOnly menor na pilha. O método B, que está tentando acessar o recurso, pode interromper a caminhada da pilha imediatamente usando o Assert método . Nesse caso, o PermitOnly colocado no método A stack by (o método de chamada) nunca é descoberto.

PermitOnly é semelhante a Deny, pois ambos fazem com que as caminhadas de pilha falhem quando, de outra forma, teriam êxito. A diferença é que Deny especifica permissões que farão com que a caminhada da pilha falhe, mas PermitOnly especifica as únicas permissões que não fazem com que a caminhada da pilha falhe.

Chame esse método para garantir que seu código possa ser usado para acessar apenas os recursos especificados. A chamada para PermitOnly é eficaz até que o código de chamada retorne ao chamador. Somente um PermitOnly pode estar ativo em um quadro. Uma tentativa de chamar PermitOnly quando um ativo PermitOnly existe no quadro resulta em um SecurityException. Chame RevertPermitOnly ou RevertAll para remover um ativo PermitOnly.

PermitOnly é ignorado para uma permissão não concedida porque uma demanda por essa permissão não terá êxito. No entanto, se o código mais baixo na pilha de chamadas mais tarde chamar Demand essa permissão, um SecurityException será gerado quando o passo a passo da pilha atingir o código que tentou chamar PermitOnly. Isso ocorre porque o código chamado PermitOnly não recebeu a permissão, embora tenha solicitado PermitOnly essa permissão. Normalmente, a pilha de chamadas é representada como crescente, de modo que métodos mais altos na pilha de chamadas chamem métodos mais baixos na pilha de chamadas.

Notas aos Herdeiros

Não é possível substituir esse método.

Aplica-se a