【发布时间】:2012-06-01 18:01:00
【问题描述】:
我正在使用 ASP.NET MVC 和使用 Repository 模式进行数据访问的实体框架来实现 Web 应用程序。此应用程序将有几个不相关的用户创建对象。每个用户都应该只能访问他们自己的对象。
是否有任何模式或内置 EF 功能提供一种方法来确保用户只能访问自己的记录?
我目前正在考虑向所有私有域对象添加一个 owner 字段,并实现一个对 DB 的所有查询都必须通过的类。此类将确定被查询的域对象是否是私有的。如果是这样,这个类将在 owner 上附加一个过滤器到查询中。这听起来合理吗?
【问题讨论】:
-
问题是,用户关联通常被认为是元数据,而不是数据。您可以将数据放在一起,但如何区分所有用户都需要访问的表和仅包含用户特定数据的表?如果您需要这样的机制,通常需要自定义构建。
-
我正在考虑让那些私有的域对象实现一个 IPrivateData 接口,该接口还定义了 OwnerId 字段。如果域对象没有实现该接口,则它是公共的。
-
这很有道理;但我认为您不会为此找到模式,因为它似乎是针对特定业务案例的。
标签: asp.net-mvc entity-framework design-patterns