我正在努力解决可能是一件简单的事情或我误解的事情......但无论如何,首先使用Linq实体代码,我试图让我的一些表无法从客户端访问,但没有成功。
使用Breeze,我创建了一个datacontext,只保存我想要暴露的dbsets,很好。 但是当我使用.expand()编写查询时。例如,假设我有一个我要公开的帖子表,以及一个我想要隐藏的所有者表。 使用如下查询:
var query = EntityQuery
.from('Posts')
.expand('Owner');
我仍然可以看到所有者的所有列。
所以问题是:在Linq中,我应该如何保护/保护/隐藏我想隐藏的表格和/或特定列?
经过一番挖掘,我发现的只是[JsonIgnore]属性,这对我来说似乎不够。
最好的方法是什么?我觉得我错过了一些可能很大的东西,但这是一天结束的时候......
由于
答案 0 :(得分:1)
如果您使用的是Breeze的WebApi实现,那么Breeze也支持ODataQueryOptions(see here和here)。
这允许您标记控制器方法,以限制查询的解释方式。例如,要仅允许过滤“帖子”查询,从而排除从“帖子”请求中“展开”或“选择”“所有者”的功能,您可以执行以下操作。
[Queryable(AllowedQueryOptions=AllowedQueryOptions.Filter| AllowedQueryOptions.Top | AllowQueryOptions.Skip)]
public IQueryable<Posts> Posts() {
....
}
答案 1 :(得分:0)
好吧显然我的问题已经解决了: Risks of using OData and IQueryable
我刚发现它。