QueryInterceptorAttribute Classe

Definição

O QueryInterceptorAttribute em um método anota-o como um interceptador de consulta no conjunto de entidades especificado.

public ref class QueryInterceptorAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true, Inherited=true)]
public sealed class QueryInterceptorAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true, Inherited=true)>]
type QueryInterceptorAttribute = class
    inherit Attribute
Public NotInheritable Class QueryInterceptorAttribute
Inherits Attribute
Herança
QueryInterceptorAttribute
Atributos

Exemplos

O exemplo a seguir controla o acesso ao Customers conjunto de entidades. Cada Customer um só pode ver Orders associado a esse Customer.

[QueryInterceptor("Orders")]  
public Expression<Func<Order, bool>> FilterOrders()   
{  
    return o => o.Customer.Name == /* Current principal name. */;  
}   

// Insures that the user accessing the customer(s) has the appropriate  
// rights as defined in the QueryRules object to access the customer  
// resource(s).  

[QueryInterceptor ("Customers")]  
public Expression<Func<Customer, bool>> FilterCustomers()   
{  
  return c => c.Name == /* Current principal name. */ &&  
              this.CurrentDataSource.QueryRules.Contains(  
                rule => rule.Name == c.Name &&  
                        rule.CustomerAllowedToQuery == true  
              );  
}  

Comentários

A autorização e a validação no nível do conjunto de entidades são implementadas por métodos anotados com o QueryInterceptorAttribute. Os Serviços de Dados do WCF não implementam políticas de segurança, mas fornecem a infraestrutura necessária para que os desenvolvedores de serviços escrevam suas próprias regras de segurança e validação de negócios.

O controle de acesso e a validação do conjunto de entidades são habilitados por meio de operações de consulta usando a composição de consulta. Para controlar o acesso baseado em entidade, implemente um método por entidade definido de acordo com as seguintes regras:

O método deve ter escopo público e ser anotado com o QueryInterceptorAttribute, tomando o nome de uma entidade definida como um parâmetro.

O método não deve aceitar parâmetros.

O método deve retornar uma expressão do tipo Expression<Func<T, bool>> que é o filtro a ser composto para o conjunto de entidades.

Construtores

QueryInterceptorAttribute(String)

Inicializa uma nova instância da classe QueryInterceptorAttribute para o conjunto de entidades especificado pelo parâmetro entitySetName.

Propriedades

EntitySetName

Obtém nome do conjunto de entidades que contém a entidade à qual o interceptador se aplica.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a