QueryInterceptorAttribute クラス
QueryInterceptorAttribute は、指定されたエンティティ セットに対するクエリ インターセプターとしてメソッドに注釈を付けます。
継承階層
System.Object
System.Attribute
System.Data.Services.QueryInterceptorAttribute
名前空間: System.Data.Services
アセンブリ: Microsoft.Data.Services (Microsoft.Data.Services.dll)
構文
'宣言
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := True, Inherited := True)> _
Public NotInheritable Class QueryInterceptorAttribute _
Inherits Attribute
'使用
Dim instance As QueryInterceptorAttribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public sealed class QueryInterceptorAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = true, Inherited = true)]
public ref class QueryInterceptorAttribute sealed : public Attribute
[<SealedAttribute>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = true, Inherited = true)>]
type QueryInterceptorAttribute =
class
inherit Attribute
end
public final class QueryInterceptorAttribute extends Attribute
QueryInterceptorAttribute 型は、以下のメンバーを公開しています。
コンストラクター
名前 | 説明 | |
---|---|---|
QueryInterceptorAttribute | entitySetName パラメーターで指定されたエンティティ セットに対する QueryInterceptorAttribute クラスの新しいインスタンスを初期化します。 |
先頭に戻る
プロパティ
名前 | 説明 | |
---|---|---|
EntitySetName | インターセプターの適用対象となるエンティティを含んだエンティティ セットの名前を取得します。 | |
TypeId | (Attribute から継承されています。) |
先頭に戻る
メソッド
名前 | 説明 | |
---|---|---|
Equals | (Attribute から継承されています。) | |
Finalize | (Object から継承されています。) | |
GetHashCode | (Attribute から継承されています。) | |
GetType | (Object から継承されています。) | |
IsDefaultAttribute | (Attribute から継承されています。) | |
Match | (Attribute から継承されています。) | |
MemberwiseClone | (Object から継承されています。) | |
ToString | (Object から継承されています。) |
先頭に戻る
明示的なインターフェイスの実装
名前 | 説明 | |
---|---|---|
_Attribute.GetIDsOfNames | (Attribute から継承されています。) | |
_Attribute.GetTypeInfo | (Attribute から継承されています。) | |
_Attribute.GetTypeInfoCount | (Attribute から継承されています。) | |
_Attribute.Invoke | (Attribute から継承されています。) |
先頭に戻る
説明
エンティティ セット レベルの承認と検証は、QueryInterceptorAttribute で注釈を付けたメソッドによって実装されます。 WCF Data Services にはセキュリティ ポリシーは実装されていませんが、サービス開発者が独自のセキュリティ規則やビジネス検証をプログラミングするために必要なインフラストラクチャが備わっています。
エンティティ セットのアクセス制御と検証は、クエリ コンポジションを使ったクエリ操作を通じて行うことができます。 エンティティ ベースのアクセスを制御するには、エンティティ セットごとのメソッドを次の規則に従って実装します。
対象となるメソッドはパブリック スコープとし、QueryInterceptorAttribute で注釈を付ける必要があります。また、エンティティ セットの名前を受け取るパラメーターが必要です。
対象となるメソッドは、パラメーターの指定を省略できることが必要です。
対象となるメソッドは、Expression<Func<T, bool>> 型の式 (エンティティ セットに対して作成されるフィルター) を返す必要があります。
使用例
次の例では、Customers エンティティ セットへのアクセスを制御します。 それぞれの Customer から見えるのは、その Customer に関連付けられた Orders だけです。
[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
);
}
スレッド セーフ
この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。