【问题标题】:how to implement robust row filtering (by user) for Breeze+WebAPI+EntityFramework如何为 Breeze+WebAPI+EntityFramework 实现健壮的行过滤(按用户)
【发布时间】:2013-11-16 00:36:51
【问题描述】:

我需要对受登录用户身份限制的特定实体拥有所有访问权限(根据复杂的规则,他们只能查看某些实例)。在 oData $filter 中指定太难了(无论如何我都不想这样做)。我不想求助于存储库(我试图为动态响应式 Web 应用程序提供功能最齐全、最灵活的数据接口)。我想在 Microsoft(或 Breeze)堆栈中的某个点拦截请求,以修改 oData 查询或 EntityFramework 查询以注入安全过滤。我知道如何轻松地为实体的直接请求做到这一点,但我希望它在间接请求时也能工作(通过相关实体的导航属性)。想法?

【问题讨论】:

  • 仅基于经过身份验证的用户进行安全保护。不要根据他们发布的数据来做。您可以发布任何您喜欢的数据。例如提琴手。因此,这意味着存储库模式/EF 层以及对选定记录的过滤器(在哪里限制)。

标签: entity-framework asp.net-web-api odata breeze


【解决方案1】:

作为实体导航加载结果的查询实际上只是针对每种类型的“defaultResourceName”的常规查询。因此,只要您关闭所有“默认”端点(听起来您已经在处理直接请求),就应该没问题。

【讨论】:

    【解决方案2】:

    如果你使用Entity Framework 6,你可以使用IDBCommandInterceptor接口在最底层拦截所有数据库命令。

    Entity Framework Logging and Intercepting Database Operations (EF6 Onwards)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多