如何获得用户角色以检查角色?

时间:2019-01-17 15:06:21

标签: c# asp.net asp.net-mvc razor

所以我正在开发我的第一个ASP.NET COre 3.0 MVC应用程序,而我刚刚进入Identity,现在我想在列表中显示用户角色,这就是我所做的。

@model CoreBuddyLite.ViewModel.UserManagementIndexViewModel
 <tbody>
        @foreach (var user in Model.Users)
        {
            <tr>
                <td>@user.UserName</td>
            </tr>
        }
    </tbody>

如果我尝试做@user.R,则不存在一个或多个角色。我有90%的把握至少在ASP.NET Core 1.0中确实存在。

我如何正确地将角色分配给用户?

public class UserManagementIndexViewModel
{
    public List<UserAccount> Users { get; set; }
}

并且我不必将其作为属性添加到我的UserAccount类中,因为它是从IdentityUser派生的

public class UserAccount : IdentityUser
{

}

1 个答案:

答案 0 :(得分:1)

IdentityUserIdentityRole是两种不同的类型。

正如JamesS指出的,UsersRoles之间存在一个复合联接。您可以在表AspNetUserRoles中找到它。它将AspNetUsersAspNetUserRoles表链接在一起。

我认为Entity Framework不是ASP.NET CORE 3的标准配置,但是如果您已经在使用它,则可以在控制器中使用_context对象(ApplicationDbContext)来构建您的使用流畅的API和Include()ThenInclude()方法列出。

否则,您可能想要按照建议去存储过程或查看SQL中的路由。

但是,请记住,ApplicationUser可能扮演许多角色,因此剃刀视图必须包含嵌套的foreach()循环。

使用版本3并非出于胆小,我很欣赏您的勤奋。