QueryTinterceptor sur toutes les entités
-
21-12-2019 - |
Question
est-il possible de faire une personnalisation QueryInterceptor dans une donnée WCFService sur tous les actionnaires au lieu d'un seul?Ceci est un requérant standard:
[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;
}
J'aime faire quelque chose comme ceci:
[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;
}
Y a-t-il quelque chose ou dois-je intégrer un incepteur pour toutes mes entités?
La solution
Malheureusement, vous ne pouvez pas utiliser une carte wild avec le QueryInterceptor, cependant, vous pouvez obtenir le même résultat que dans votre exemple en remplacement de la méthode de l'ONSTARTProcessingSrequest du DataService et en vérifiant le rôle de l'utilisateur.
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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow