WebPermission Classe

Definição

Controla os direitos de acesso a recursos de Internet HTTP.Controls rights to access HTTP Internet resources.

public ref class WebPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public sealed class WebPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type WebPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class WebPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Herança
Atributos
Implementações

Exemplos

O exemplo a seguir demonstra como criar uma nova instância do WebPermission usando um Regex.The following example demonstrates how to create a new instance of WebPermission using a Regex. Hosts adicionais são adicionados à lista conectar e aceitar da WebPermission.Additional hosts are added to the connect and accept list of WebPermission. Por fim, a lista conectar e aceitar é exibida para o console.Finally, the connect and accept list are displayed to the console.

//  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
Regex^ myRegex = gcnew Regex( "http://www\\.contoso\\.com/.*" );

// Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
WebPermission^ myWebPermission = gcnew WebPermission( NetworkAccess::Connect,myRegex );

//Add connect privileges for a www.adventure-works.com.
myWebPermission->AddPermission( NetworkAccess::Connect, "http://www.adventure-works.com" );

//Add accept privileges for www.alpineskihouse.com.
myWebPermission->AddPermission( NetworkAccess::Accept, "http://www.alpineskihouse.com/" );

// Check whether all callers higher in the call stack have been granted the permission.
myWebPermission->Demand();

// Get all the URIs with Connect permission.
IEnumerator^ myConnectEnum = myWebPermission->ConnectList;
Console::WriteLine( "\nThe 'URIs' with 'Connect' permission are :\n" );
while ( myConnectEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myConnectEnum->Current );
}

// Get all the URIs with Accept permission.   
IEnumerator^ myAcceptEnum = myWebPermission->AcceptList;
Console::WriteLine( "\n\nThe 'URIs' with 'Accept' permission is :\n" );

while ( myAcceptEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myAcceptEnum->Current );
}

   //  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
   Regex myRegex = new Regex(@"http://www\.contoso\.com/.*");

   // Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
   WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect,myRegex);
   
   //Add connect privileges for a www.adventure-works.com.
   myWebPermission.AddPermission(NetworkAccess.Connect,"http://www.adventure-works.com");
   
   //Add accept privileges for www.alpineskihouse.com.
   myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/");
   
   // Check whether all callers higher in the call stack have been granted the permission.
   myWebPermission.Demand();
   
   // Get all the URIs with Connect permission.
   IEnumerator myConnectEnum = myWebPermission.ConnectList;
   Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
   while (myConnectEnum.MoveNext())
   {Console.WriteLine("\t" + myConnectEnum.Current);}

   // Get all the URIs with Accept permission.	  
   IEnumerator myAcceptEnum = myWebPermission.AcceptList;
   Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");
     
   while (myAcceptEnum.MoveNext())
     {Console.WriteLine("\t" + myAcceptEnum.Current);}

  ' Create a Regex that accepts all the URLs contianing the host fragment www.contoso.com.
  Dim myRegex As New Regex("http://www\.contoso\.com/.*")
    
  ' Create a WebPermission that gives permission to all the hosts containing same host fragment.
  Dim myWebPermission As New WebPermission(NetworkAccess.Connect, myRegex)
  ' Add connect privileges for a www.adventure-works.com.
  myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com")
  ' Add accept privileges for www.alpineskihouse.com.
  myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/")
  ' Check whether all callers higher in the call stack have been granted the permission.
  myWebPermission.Demand()
    
  ' Get all the URIs with Connect permission.
  Dim myConnectEnum As IEnumerator = myWebPermission.ConnectList
  Console.WriteLine(ControlChars.NewLine + "The 'URIs' with 'Connect' permission are :" + ControlChars.NewLine)
  While myConnectEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myConnectEnum.Current.ToString()))
  End While 
  
  ' Get all the URIs with Accept permission.	  
  Dim myAcceptEnum As IEnumerator = myWebPermission.AcceptList
  Console.WriteLine(ControlChars.NewLine + ControlChars.NewLine + "The 'URIs' with 'Accept' permission is :" + ControlChars.NewLine)

  While myAcceptEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myAcceptEnum.Current))
  End While

Comentários

WebPermission fornece um conjunto de métodos e propriedades para controlar o acesso aos recursos da Internet.WebPermission provides a set of methods and properties to control access to Internet resources. Você pode usar um WebPermission para fornecer acesso restrito ou irrestrito ao recurso, com base na PermissionState que é definida quando o WebPermission é criado.You can use a WebPermission to provide either restricted or unrestricted access to your resource, based on the PermissionState that is set when the WebPermission is created.

Crie uma instância de WebPermission chamando seu construtor usando um dos seguintes conjuntos de parâmetros:Create a WebPermission instance by calling its constructor using one of the following sets of parameters:

A ConnectList e AcceptList contêm os URIs aos quais você concedeu permissão de acesso.The ConnectList and AcceptList hold the URIs to which you have granted access permission. Para adicionar um URI a uma dessas listas, use AddPermission.To add a URI to either of these lists, use AddPermission. Se você passar Accept como o parâmetro NetworkAccess, o URI será adicionado ao AcceptList.If you pass Accept as the NetworkAccess parameter, the URI will be added to the AcceptList. WebPermission permitirá conexões com a classe de destino com URIs correspondentes ao AcceptList.WebPermission will allow connections to your target class with URIs matching the AcceptList.

Cuidado

Para negar acesso a um recurso da Internet, você deve negar acesso a todos os caminhos possíveis para esse recurso.To deny access to an Internet resource, you must deny access to all the possible paths to that resource. Isso requer a chamada de WebPermission.WebPermission com o parâmetro de estado definido como Deny.This requires calling WebPermission.WebPermission with state parameter set to Deny. Uma abordagem melhor é permitir o acesso somente ao recurso específico.A better approach is to allow access to the specific resource only. Para obter mais informações sobre este assunto, consulte o usando o tópico Método Deny .For more information about this subject, refer to the Using the Deny Method topic.

Observação

Você precisa negar o acesso usando apenas o caminho canônico do recurso.You need to deny access using only the resource canonical path. Não é necessário usar todas as variações sintáticas do caminho.There is no need to use all the path's syntactical variations.

Observação

As informações de nome de usuário e porta padrão são removidas da Uri antes da comparação com o argumento de expressão regular fornecido ao construtor de WebPermission(NetworkAccess, Regex).User name and default port information is stripped from the Uri before the comparison with the regular expression argument that is supplied to the WebPermission(NetworkAccess, Regex) constructor. Se a expressão regular contiver informações do usuário ou o número da porta padrão, todas as Uris de entrada não corresponderão à expressão regular.If the regular expression contains user information or the default port number, then all incoming Uris will fail to match the regular expression.

Construtores

WebPermission()

Cria uma nova instância da classe WebPermission.Creates a new instance of the WebPermission class.

WebPermission(NetworkAccess, Regex)

Inicializa uma nova instância da classe WebPermission com os direitos de acesso especificados para a expressão regular do URI indicado.Initializes a new instance of the WebPermission class with the specified access rights for the specified URI regular expression.

WebPermission(NetworkAccess, String)

Inicializa uma nova instância da classe WebPermission com direitos de acesso especificado para o URI indicado.Initializes a new instance of the WebPermission class with the specified access rights for the specified URI.

WebPermission(PermissionState)

Cria uma nova instância da classe WebPermission que transmite todas as demandas ou falha todas as demandas.Creates a new instance of the WebPermission class that passes all demands or fails all demands.

Propriedades

AcceptList

Essa propriedade retorna uma enumeração de permissões de aceitação única mantidas por este WebPermission.This property returns an enumeration of a single accept permissions held by this WebPermission. Os tipos de objetos possíveis contidos na enumeração retornada são String e Regex.The possible objects types contained in the returned enumeration are String and Regex.

ConnectList

Essa propriedade retorna uma enumeração de permissões de conexão única mantidas por este WebPermission.This property returns an enumeration of a single connect permissions held by this WebPermission. Os tipos de objetos possíveis contidos na enumeração retornada são String e Regex.The possible objects types contained in the returned enumeration are String and Regex.

Métodos

AddPermission(NetworkAccess, Regex)

Adiciona o URI especificado com os direitos de acesso especificados para o WebPermission atual.Adds the specified URI with the specified access rights to the current WebPermission.

AddPermission(NetworkAccess, String)

Adiciona a cadeia de caracteres do URI com os direitos de acesso especificados para o WebPermission atual.Adds the specified URI string with the specified access rights to the current WebPermission.

Assert()

Declara que o código de chamada pode acessar o recurso protegido por uma demanda de permissão através do código que chama este método, mesmo que os chamadores na pilha não tenham recebido permissão para acessar o recurso.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Usar Assert() pode criar problemas de segurança.Using Assert() can create security issues.

(Herdado de CodeAccessPermission)
Copy()

Cria uma cópia de um WebPermission.Creates a copy of a WebPermission.

Demand()

Força um SecurityException no tempo de execução se todos os chamadores no topo da pilha de chamadas não receberam as permissões especificadas pela instância atual.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Herdado de CodeAccessPermission)
Deny()

Impede que os chamadores no nível superior da pilha de chamadas usem o código que chama esse método para acessar o recurso especificado pela instância atual.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Herdado de CodeAccessPermission)
Equals(Object)

Determina se o objeto CodeAccessPermission especificado é igual ao CodeAccessPermission atual.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Herdado de CodeAccessPermission)
FromXml(SecurityElement)

Reconstrói um WebPermission de uma codificação XML.Reconstructs a WebPermission from an XML encoding.

GetHashCode()

Obtém um código hash para o objeto CodeAccessPermission atual, adequado para algoritmos de hash e estruturas de dados, tais como uma tabela de hash.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Herdado de CodeAccessPermission)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
Intersect(IPermission)

Retorna a interseção lógica de duas instâncias WebPermission.Returns the logical intersection of two WebPermission instances.

IsSubsetOf(IPermission)

Determina se o WebPermission atual é um subconjunto do objeto especificado.Determines whether the current WebPermission is a subset of the specified object.

IsUnrestricted()

Verifica o estado geral das permissões de WebPermission.Checks the overall permission state of the WebPermission.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
PermitOnly()

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.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(Herdado de CodeAccessPermission)
ToString()

Cria e retorna uma representação de cadeia de caracteres do objeto de permissão atual.Creates and returns a string representation of the current permission object.

(Herdado de CodeAccessPermission)
ToXml()

Cria uma codificação de XML de um WebPermission e seu estado atual.Creates an XML encoding of a WebPermission and its current state.

Union(IPermission)

Retorna a união lógica entre duas instâncias da classe WebPermission.Returns the logical union between two instances of the WebPermission class.

Implantações explícitas de interface

IPermission.Demand() (Herdado de CodeAccessPermission)
IStackWalk.Assert() (Herdado de CodeAccessPermission)
IStackWalk.Demand() (Herdado de CodeAccessPermission)
IStackWalk.Deny() (Herdado de CodeAccessPermission)
IStackWalk.PermitOnly() (Herdado de CodeAccessPermission)

Aplica-se a

Veja também