Sdílet prostřednictvím


QueryInterceptorAttribute Třída

Definice

Objekt QueryInterceptorAttribute v metodě ji označí jako zachytávání dotazů v zadané sadě entit.

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
Dědičnost
QueryInterceptorAttribute
Atributy

Příklady

Následující příklad řídí přístup k Customers sadě entit. Každý z nich Customer může zobrazit Orders pouze přidružený k chyt .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  
              );  
}  

Poznámky

Autorizace a ověřování na úrovni sady entit je implementováno metodami opatřenými poznámkami QueryInterceptorAttribute. Datové služby WCF neimplementují zásady zabezpečení, ale poskytují infrastrukturu potřebnou pro vývojáře služeb, aby mohli psát vlastní pravidla zabezpečení a obchodní ověřování.

Řízení přístupu a ověřování sady entit se povoluje prostřednictvím operací dotazů pomocí složení dotazů. Pokud chcete řídit přístup na základě entity, implementujte sadu metod na entitu podle následujících pravidel:

Metoda musí mít veřejný obor a musí být opatřena poznámkami s QueryInterceptorAttributenázvem sady entit jako parametrem .

Metoda nesmí přijímat žádné parametry.

Metoda musí vrátit výraz typu Expression<Func<T, bool>> , který je filtrem, který má být sestaven pro sadu entit.

Konstruktory

QueryInterceptorAttribute(String)

Inicializuje novou instanci QueryInterceptorAttribute třídy pro sadu entit určenou parametrem entitySetName .

Vlastnosti

EntitySetName

Získá název sady entit, která obsahuje entitu, na kterou se vztahuje zachytávání.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro