当前位置: 首页 > 编程语言 > C#

使用EntityFramework管理实体访问和权限共享

时间:2023-04-11 01:02:50 C#

使用EntityFramework管理实体访问和权限在使用EntityFramework4.1的Web应用程序中,我们使用SQLServerMembership来管理用户访问。但是,我们需要在权限管理中实现更细粒度的角色集。在数据库中我们创建了相关表:-Roles-Permissions-UserInRole(每个用户的角色)-RolesPermissions(与角色关联的权限)在一些核心实体上使用属性,我们使用EF来限制语义访问,例如,通过指定特定用户,他/她只能看到相关的发货订单或固有数据。现在我们要在其中注入权限,也就是说客户可以查看和创建订单,而公司(这是两个不同的角色)只能查看其产品的订单和打印报告。这个想法也是在实体级别使用属性,并且在调用方法时检查当前用户是否具有适当的权限。例如:publicvoidBeforeAdd(){//获取特定实体所需的权限(以订单为例)//检查当前用户是否有创建新订单的权限}该方法将被每个实体调用,允许集中控制在实体级权限。我们在前端使用MVC,我们在其中实现了角色和权限访问。我们需要对后端部分(包含数据层)做同样的事情。这是两个通过Web服务进行通信的独立服务器。通过在后台实现权限管理,加强对数据访问的控制。是否有任何我们可以遵循的模式或最佳实践(最终使用EF的一些内置功能)来实现权限管理?有没有我们可以遵循的模式或最佳实践?是的,它被称为面向方面的编程,而PostSharp可能是完成这项工作的最佳工具(不幸的是它不是免费的)。但是,如果您使用的是MVC(您没有提到这样的事情),您可以派生您自己的AuthorizeAttribute版本来查询您自己的授权表,并且您可以简单地使用您想要允许的角色来装饰您的操作,例如[Authorize(Roles="Customer,Company")]publicActionResultViewOrders(...){...}[Authorize(Roles="Customer")]publicActionResultCreateOrder(...){...}你是熟悉ASP.NET的默认成员资格提供程序吗?这是一个典型的如何建立会员的例子。如果您不熟悉它,它可能是一个很好的例子。您可能还会发现这个SO问题很有帮助。以上就是C#学习教程:使用EntityFramework管理实体访问和权限共享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: