gpt4 book ai didi

c# - 所有实体上的 QueryInterceptor

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:57 25 4
gpt4 key购买 nike

是否可以定制 QueryInterceptor在所有实体的 WCF 数据服务中,而不是只有一个?这是一个标准的 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;
}

有什么方法或者我必须为我的所有实体集成一个接受器吗?

最佳答案

不幸的是,您不能在 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);
}

关于c# - 所有实体上的 QueryInterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com