ASP.NET MVC 3中的行级权限或Facebook式隐私?

时间:2011-11-06 00:11:22

标签: asp.net-mvc-3 security database-security

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

  1. 用户必须存储在用户表中。创建Windows用户帐户,SQL Server用户或SQL Server角色对于此应用程序是不可接受的。
  2. 安全标准必须由任意数量的来源定义,即用户的位置,工资等级,专业等。
  3. 现在我们通过生成一个SQL“where”子句并在执行之前将其附加到每个查询的末尾来实现它。这限制了我们无法利用实体框架等新技术,并且还带有其自身的其他限制和性能问题。

    非常感谢任何帮助或想法。如果需要进一步澄清,请告诉我。

    谢谢!杰森

1 个答案:

答案 0 :(得分:1)

您仍然可以使用Entity Framework。 EF有几种方法可以做到这一点:

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

  • 仅公开包含pre IQueryable'd数据的Where()(但要注意关系)

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