0

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

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

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

此外,还有另一个更复杂的权限级别,其中事件可以与其他对象相关联,我们称它们为位置:位置:位置 ID 事件位置:事件 ID、位置 ID 用户位置权限:用户 ID、位置 ID

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

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

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

4

1 回答 1

0
  1. 我不知道在 NHibernate 中让它如此自动。
  2. 我不知道您的项目是否可以使用使用 lambda 表达式(或 Criteria)的查询,如果可以,我将构建一个抽象层,在继承的实体上的所有查询上添加过滤器。所以这个逻辑只需要应用一次。

Ps:这只是一个实现的提示。

于 2013-11-12T20:04:51.013 回答