如何管理角色和查询?

时间:2016-12-07 18:18:39

标签: c# asp.net-mvc linq

我正在创建一个包含4个角色的管理面板。管理员拥有所有数据的权限。组织者角色可以访问他的数据。第三个角色可以访问组织者允许的那些数据。和4rth角色具有3rth角色允许的访问权限。

在CRUD操作中,我使用以下代码获取当前用户ID:

var currentUser = Guid.Parse(Thread.CurrentPrincipal.Identity.GetUserId());

并将此Id传递给数据访问层。如果当前用户是所需实体的所有者,则CRUD操作将起作用。 在数据访问leyer中,我检查当前用户Id是否与实体的UserId匹配,然后让它进行操作:

 var product=_dbContext.Products.Where(x=>x.UserId==currentUser && x.ProductId== productId);

但我希望管理员能够做这些操作。我知道我可以根据当前用户角色编写多种方法来执行相同的操作。但有没有更清洁的解决方案?

例如,组织者可以编辑id = 1的产品,因为他是id = 1的产品的所有者。但我想要,也管理员能够编辑id = 1的产品。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似的东西......

var rolesForUser = await userManager.GetRolesAsync(currentUser);
Product product;

if (rolesForUser.Contains("Admin"))
{
    product = _dbContext.Products.Where(x.ProductId == productId);
}
else
{
    product = _dbContext.Products.Where(x => x.UserId == currentUser && x.ProductId == productId);
}