Tag: asp.net web api odata

Web API每个实体的OData安全性

背景: 我有一个非常大的OData模型,目前使用WCF数据服务(OData)来公开它。 不过,微软已经表示WCF数据服务已经死亡 ,Web API OData是他们将要进行的方式。 所以我正在研究如何使Web API OData和WCF数据服务一样工作。 问题设置: 模型的某些部分不需要保护,但有一部分可以。 例如,客户列表需要安全来限制谁可以阅读,但是我有其他列表,比如产品列表,任何人都可以查看。 Customers实体有许多可以达到的关联。 如果您计算2+级关联,则可以通过数百种方式(通过关联)访问客户。 例如Prodcuts.First().Orders.First().Customer 。 由于客户是我系统的核心,您可以从大多数任何实体开始,最终将您的方式与客户列表联系起来。 WCF数据服务有一种方法可以让我通过这样的方法把安全性放在一个特定的实体上: [QueryInterceptor("Customers")] public Expression<Func<Customer, bool>> CheckCustomerAccess() { return DoesCurrentUserHaveAccessToCustomers(); } 当我看Web API的OData,我没有看到这样的事情。 另外我非常担心,因为我所做的控制器似乎并没有被召唤,当一个协会是遵循的。 (这意味着我不能把安全性放在CustomersController 。) 我担心,我将不得不设法列举协会可以如何得到客户,并在每一个方面安全的方式。 题: 有没有一种方法可以将安全性放在Web API OData的特定实体上? (没有必要列举所有可能以某种方式扩展到该实体的关联)