具有NHibernate的对象的用户权限

时间:2013-11-12 19:47:48

标签: c# nhibernate permissions

假设您有以下三个表,其中列出了重要的comlumns:

用户:user_id 实体:entity_id 事件:event_id,entity_id UserEntityPermissions:user_id,entity_id,is_admin

现在,当用户请求访问以查看给定一组搜索参数的事件或事件列表时,我想确保用户只能查看他们已被许可的实体的事件。 NHibernate有没有设施可以做到这一点?

此外,还有另一级别的权限,甚至更复杂,其中事件可以与其他对象关联,让我们称之为位置: 位置:location_id EventLocations:event_id,location_id UserLocationPermissions:user_id,location_id

在这种情况下,不是实体管理员的用户应该只能查看他们对所有链接位置具有权限的事件。似乎一旦我开始添加这些类型的权限,在事件查询中添加任何过滤器都会变得完全无法管理。

您将使用什么模式来简化中间层,以确保用户只能访问他们应该看到的事件?

您是否总是将所有事件从数据库返回到中间层,然后检查每个事件以查看用户是否具有权限?看起来这样做会有很大的开销。

1 个答案:

答案 0 :(得分:0)

  1. 我知道没有任何东西可以在NHibernate中自动生成。
  2. 我不知道您的项目是否可以使用lambda进行查询 表达式(或标准),如果是这样,我将构建一个抽象层 在继承的实体上的所有查询上添加过滤器。所以 该逻辑只需要应用一次。
  3.   

    Ps:这只是一个实施的暗示。