1

我的应用程序有一些特权信息,某些用户不允许看到的成本。该应用程序使用 WebAPI OData 将数据拉入 AngularJS 单页应用程序,然后隐藏或显示数据。

显然这并不理想,任何精通技术的用户都可以只检查网络流量,然后查看成本。

有没有办法在它进入我的 BL/Service 层之前从源头的实体框架查询中删除这些数据?

我认为投影可能会有所帮助,但它会破坏 .Include 功能,这会破坏我的 OData $extend 功能。我目前没有首先使用代码,但如果有帮助,我愿意切换。

我担心我最好的选择是放弃 OData 并自己在 BL 或 Web 服务边界删除数据。

谢谢

4

1 回答 1

0

您可以尝试使用 ODataConventionModelBuilder.Ignore。在您的数据库上下文中,您可以执行类似的操作

protected override void OnModelCreating(ODataConventionModelBuilder modelBuilder)
{
       modelBuilder.Entity<Customer>()
            .Ignore(e => e.Address);
}

这样,属性地址就不会显示在元数据中,也不会在查询时显示.../客户

Stackoverflow 上的相关帖子如何防止 ODataConventionModelBuilder 自动公开所有派生类型的元数据?

于 2014-10-23T02:47:19.463 回答