Condividi tramite


QueryInterceptorAttribute Classe

Definizione

La presenza di QueryInterceptorAttribute in un metodo lo identifica come intercettore di query sul set di entità specificato.

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
Ereditarietà
QueryInterceptorAttribute
Attributi

Esempio

Nell'esempio seguente viene controllato l'accesso al set di entità Customers. Ogni Customer è in grado di vedere solo gli oggetti Orders associato al Customer in questione.

[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  
              );  
}  

Commenti

L'autorizzazione e la convalida a livello di set di entità vengono implementate da metodi annotati con QueryInterceptorAttribute. I servizi dati WCF non implementano criteri di sicurezza, ma forniscono invece l'infrastruttura necessaria per gli sviluppatori di servizi per scrivere le proprie regole di sicurezza e la convalida aziendale.

Il controllo e la convalida dell'accesso al set di entità vengono abilitati mediante operazioni di query utilizzando la composizione di query. Per controllare l'accesso basato sulle entità, implementare un metodo per set di entità in base alle seguenti regole:

Il metodo deve avere ambito pubblico e deve essere annotato con QueryInterceptorAttribute, assumendo il nome di un set di entità come parametro.

Il metodo non deve accettare parametri.

Il metodo deve restituire un'espressione di tipo Expression<Func<T, bool>> che rappresenta il filtro da comporre per il set di entità.

Costruttori

QueryInterceptorAttribute(String)

Inizializza una nuova istanza della classe QueryInterceptorAttribute per il set di entità specificato dal parametro entitySetName.

Proprietà

EntitySetName

Ottiene il nome del set di entità che contiene l'entità a cui viene applicato l'intercettore.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a