1

我正在开发一个需要自定义细粒度安全/隐私设置的项目。基本上我需要能够根据执行查询的用户来限制对数据的访问。很容易,对吧?这里有几个gotchyas虽然..

  1. 用户必须存储在用户表中。此应用程序不接受创建 Windows 用户帐户、SQL 服务器用户或 SQL 服务器角色。
  2. 安全标准必须由任意数量的来源定义,即用户的位置、薪酬等级、专业等。

现在,我们通过生成一个 SQL 的“where”子句并在执行之前将其附加到每个查询的末尾来实现这一点。这限制了我们利用实体框架等新技术的能力,同时也带来了它自己的其他限制和性能问题。

任何帮助或想法将不胜感激。如果需要进一步澄清,请告诉我。

谢谢!杰森

4

1 回答 1

1

您仍然可以使用实体框架。使用 EF 有几种方法可以做到这一点:

  • 创建一个注入WHERE子句的自定义包装提供程序,如下所示

  • 仅公开IQueryable包含预定义Where()数据的 s(但要注意关系)

  • 如果当前用户无权访问它,则在实体 ctor 中抛出异常(可能不是一个好主意)

于 2011-11-06T00:16:15.713 回答