在我们的项目管理应用程序中,我们需要将访问权限(每个用户的每个项目)保留在db中的单独表中。 IE浏览器

用户A可以在项目#1中创建任务,
用户A只能读取项目#2中的任务

为此,我们通过添加新的coloumn(projectID)扩展了AspNetUserRoles表。

默认情况下,在剃刀视图中,我们可以使用User.IsInRole("CanCreateTask")检查用户角色。我们需要扩展此方法,并要检查特定项目Ie的用户角色。 User.IsInRole("CanCreateTask", project.Id)

编辑:另外,我需要检查与project.Id控制器中的用户访问权限

[Authorize(Roles = "CanCreateTask")]


在网上做了一些研究,但找不到任何解决方案。

最佳答案

您可以创建extension method,扩展User类。

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);

10-06 05:56