我正在寻找一种优雅的方式,不允许BreezeJS中的特定EntityTypes为expanded。我们有一个(某种程度上)公共Web服务,我们正在公开,有些表我们不希望该服务的某些消费者看到它们。虽然我们只能为这些特定的表公开Web API方法,但是服务的使用者仍然可以通过从相关表扩展来访问这些表。
注意:我已经发布了这个问题的答案,给出了解决方法。但是,我很感兴趣,如果有人知道更优雅的方式为这只特殊的猫皮肤。
答案 0 :(得分:1)
在UserVoice page for requesting this feature to be formally added to Breeze,Ward Bell提出了一个体面的解决方案:
同时,在你的控制器中,你可以检查来自$ select和$ expand的请求的查询字符串,如果你看到它就抛出异常。
我猜这看起来像这样:
[HttpGet]
public IQueryable<Widget> Widgets() {
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["$expand"]))
{
throw new Exception("Ah ah ah, you didn't say the magic word!");
}
return _contextProvider.Context.Widgets;
}
...阻止所有扩展,或阻止扩展功能的更具体的东西。这不是太破旧但不完全&#34;优雅&#34;。
(是的,那是Jurassic Park reference。)