다음을 통해 공유


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

스레드 보안

이 유형의 모든 공용 static(Visual Basic에서는 Shared) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전성이 보장되지 않습니다.

참고 항목

참조

System.Data.Services 네임스페이스