0

我试图弄清楚如何适应用户权限和获取数据。这不是一个简单的任务

GetInvoices where Invoice.UserId = 5

所以我可以将 userId 传递给一个方法,但它非常复杂,而且我不想比要求的更深入,它会造成混乱。目前它的工作方式如下:View 调用 ViewModel 上的命令,ViewModel 调用存储库方法,该方法使用 EF 获取数据。现在我需要根据用户权限过滤这些数据。

从逻辑上讲,VIewModel 应该强制执行业务规则。这是否意味着我应该在 ViewModel 中创建 IQueriable,并将其传递给 Model?

或者,可以这样做

... if (LoggedUser.Role.Permissions.any(x=> x.PErmissionType == somePermission) && ....)

在(M)模型方面?

4

1 回答 1

1

您的DAL应该根据用户的权限获取和过滤结果。换句话说,VM 应该只接收允许用户查看的模型/数据。
如您所说, VM 强制执行业务规则,但我不确定模型过滤是否适合此类别。

您应该做的是,当 VM 请求数据时,他应该传递基于权限(用户 ID 或用户拥有的权限集)过滤数据所需的任何内容,并且只传递适合他的数据应该返回权限。

于 2012-12-03T21:31:55.320 回答