すべてのエンティティのQueryInterceptor
-
21-12-2019 - |
質問
カスタム QueryInterceptor WCFデータを作成することは可能です。すべてのエンタイトでのサービスは1つだけではなく?これは標準のQueryInterceptorです:
[QueryInterceptor("Products")]
public Expression<Func<Product, bool>> OnQueryProducts()
{
var user = HttpContext.Current.User;
if (user.IsInRole("Administrator"))
return (Product p) => true;
else
return (Product p) => false;
}
.
私はこのようなことをするのが好きです:
[QueryInterceptor("*")]
public Expression<Func<Object, bool>> OnQueryProducts()
{
var user = HttpContext.Current.User;
if (user.IsInRole("Administrator"))
return (Object p) => true;
else
return (Object p) => false;
}
.
何らかの方法がありますか、それとも私のエンティティのすべてのInceptorを統合する必要がありますか?
解決
残念ながら、QueryInterceptorを使用してワイルドカードを使用することはできませんが、DataServiceのOnStartProcessingRequestメソッドをオーバーライドし、そこでユーザーの役割を確認することで、サンプルと同じ結果を実現できます。
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
var user = HttpContext.Current.User;
// Only Administrator users are allowed access
if (!user.IsInRole("Administrator"))
{
// Any other role throws a security exception
throw new SecurityException("You do not have permission to access this Service");
}
base.OnStartProcessingRequest(args);
}
. 所属していません StackOverflow