QueryInterceptorAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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 |
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) |