在我们的项目管理应用程序中,我们需要在db的单独表中保留访问权限(每个用户的每个项目)。 IE浏览器。
用户A可以在项目#1中创建任务, 用户A只能读取Project#2中的任务
为了成功,我们通过添加新的coloumn(projectID)来扩展我们的AspNetUserRoles表。
默认情况下,在razor视图中,我们可以使用User.IsInRole("CanCreateTask")
检查用户角色。我们需要扩展此方法,并希望检查特定项目的用户角色即。 User.IsInRole("CanCreateTask", project.Id)
已编辑:我还需要使用project.Id
检查控制器中的用户访问权限[Authorize(Roles = "CanCreateTask")]
对网络进行了一些研究但找不到任何解决方案。
答案 0 :(得分:4)
您可以创建extension method,扩展用户类。
public static bool IsInRole(this User user, string role, int projectID)
{
var isInRole = user.IsInRole(role);
var hasRoleInProject = // Logic for deciding if it is in the role for this project
return isInRole && hasRoleInProject;
}
这个方法会像这样调用:
user.IsInRole("CanCreateTask", project.Id);