【发布时间】:2016-06-27 07:30:06
【问题描述】:
我第一次使用 Repository 模式 开发一个 ASP.NET MVC5 项目。它有很多角色,每个角色都会有很多用户。到目前为止,我已经创建了各种模型实体,并且添加、更新、删除场景工作正常。在测试过程中,我发现用户能够更新那些不属于他/她的实体。
我想限制用户仅访问、编辑、更新、删除属于用户本身的那些实体(数据库中的行),而不是其他实体。
我知道,我需要在某处检查当前登录用户的userId,但如果是Repository pattern with Entity Framework,我应该把它放在哪里。
我想到的两种方法是:将模型更改为在每个实体中具有 userId 属性,或者将每个实体与其父实体连接起来以获取相关的用户详细信息(获取 userId 的完整实体链)。
实现这一点的首选方法是什么? 谢谢!
【问题讨论】:
-
从头开始:您想要的商业目的是什么。换句话说,该功能需要如何工作?是否可以根据域模型层次结构中某处的用户/角色来限制数据访问?或者您是否希望每个实体都有一个相关的用户 (Id),从而对域模型的每个级别都有限制?
-
这在角色基础上是不可能的,因为会有很多用户在同一角色中。只有
userId可以确定实体是否与他/她相关。 -
为什么他们有可能一开始就做出这些不允许的修改?你的意思是他们甚至不应该查看其他用户的数据?
标签: c# entity-framework design-patterns asp.net-mvc-5 repository-pattern