1

我正在寻找一种优雅的方式来不允许在 BreezeJS中扩展特定的实体类型。我们有一个(有点)我们要公开的公共 Web 服务,并且有一些表我们不希望对该服务的某些消费者可见。虽然我们只能为那些特定的表公开 Web API 方法,但服务的使用者仍然可以通过从相关表扩展来访问这些表。

注意:我已经发布了这个问题的答案,给出了解决方法。但是,如果有人知道一种更优雅的给这只猫剥皮的方法,我很感兴趣。

4

1 回答 1

1

请求将此功能正式添加到 Breeze 的 UserVoice 页面上,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;
    }

...阻止所有扩展,或更具体地阻止功能扩展本身。这不是太破旧,但不是很“优雅”。

(是的,这是侏罗纪公园的参考。)

于 2013-02-01T13:53:05.827 回答