asp.net-mvc – 如果有的话,设计模式在实现基于用户的记录级权限
发布时间:2020-12-16 09:47:27 所属栏目:asp.Net 来源:网络整理
导读:我正在使用ASP.NET MVC和Entity Framework使用Repository模式实现数据访问的Web应用程序.此应用程序将有几个不相关的用户创建对象.每个用户只能访问自己的对象. 是否有任何模式或内置EF功能,它们提供了一种方法来确保用户只能访问自己的记录? 我目前正在考
我正在使用ASP.NET MVC和Entity Framework使用Repository模式实现数据访问的Web应用程序.此应用程序将有几个不相关的用户创建对象.每个用户只能访问自己的对象.
是否有任何模式或内置EF功能,它们提供了一种方法来确保用户只能访问自己的记录? 我目前正在考虑向所有私有域对象添加所有者字段,并实现一个所有对DB的查询都必须通过的类.此类将确定要查询的域对象是否为私有.如果是这样,此类将在查询的所有者上附加过滤器.这听起来合理吗? 解决方法
您的问题的第二部分非常接近
Repository Pattern的描述.此方法可用于通过强制插入特定于用户的过滤器来解决逐个记录的访问问题.
此方法将客户端业务逻辑与基于行的安全性的实现分离:如果您以后决定更改实现逐个记录访问的方式,则需要修改的只是存储库实现.客户端甚至不需要重新编译. EF将所有业务实体的存储库定义为部分类.您可以在其上添加一个接口(在单独的文件中),并使用EF生成的方法实现存储库的方法: IMyRepository { IQueryable<ClientOrder> Orders; IQueryable<ServiceIssue> Issues; } // The other part of MyRepository is EF-generated. // Assume that EF provides properties these properties: // - ObjectSet<ClientOrder> AllOrders // - ObjectSet<ServiceIssue> AllIssues public partial SecureRepository : IMyRepository { private readonly Guid userId; public SecureRepository(Guid userId) : this() { this.userId = userId; } public IQueryable<ClientOrder> Orders { get { return AllOrders.Where(ord => ord.UserId == userId); } } public IQueryable<ServiceIssue> Issues { get { return AllIssues.Where(csi => csi.UserId == userId); } } } 您可以添加写入方法,以便在将订单和问题保存到数据库之前将其设置为UserId. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – asp.net mvc并检查用户是否已登录
- 从Azure功能调用Asp.Net Web API端点
- asp.net-mvc – 我可以在Ajax.ActionLink中使用OnSuccess事
- asp.net-mvc – 在哪里可以找到一个简单的简单解释MVC?
- asp.net – 如何防止在BundleTransformer中使用* .min.js?
- asp.net-mvc – 如何编辑MVC4表单中的子对象?
- 如何从ASP.NET Web API方法中查找声明的内容?
- 浅谈ASP.Net Core WebApi几种版本控制对比
- 使用asp.net Web表单中的流返回可下载文件
- asp.net-mvc – ASP.NET MVC和Unity 1.2容器问题
推荐文章
站长推荐
- asp.net – 如何从HTML到ASPX页面POST FOR FORM
- asp.net – 如何在一个新的选项卡中打开asp:Hyp
- asp.net – 隐藏字段vs viewstate
- ASP.NET / MVC 4在64位IIS 7.5服务器上捆绑和缩小
- 在IIS / ASP.Net中的.NET 1.1应用程序中创建.NET
- 如何在ASP.NET MVC中配置3个级别的URL?
- asp.net – GridView没有任何属性或属性来生成列
- asp.net-mvc-4 – 如何在MVC4 C#中安排任务?
- asp.net – 可以创建.config文件并将其包含到web
- asp.net-mvc – FormsAuthentication LoginUrl
热点阅读