我的应用程序有一些特权信息,某些用户不能看到的费用。该应用程序使用WebAPI OData将数据下载到AngularJS单页面应用程序中,然后隐藏或显示数据。
显然,这并不理想,任何精通技术的用户都可以检查网络流量,然后查看费用。
在它进入我的BL /服务层之前,有没有办法从源中的实体框架查询中删除这些数据?
我认为投影可能会有所帮助,但它会破坏.Include功能,这将破坏我的OData $扩展功能。我目前没有先使用代码,但如果有帮助,我愿意转换代码。
我担心我最好的选择是放弃OData并在BL或Web服务边界自行删除数据。
由于
答案 0 :(得分:0)
您可以尝试使用ODataConventionModelBuilder.Ignore。 在数据库上下文中,您可以执行类似
的操作protected override void OnModelCreating(ODataConventionModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.Ignore(e => e.Address);
}
通过这种方式,属性地址不会显示在元数据中,并且在您查询时不会显示... / Customers
Stackoverflow上的相关帖子How to prevent ODataConventionModelBuilder to automatically expose all derived types' metadata?