【问题标题】:How to get IdentityUser roles' names in View?如何在 View 中获取 IdentityUser 角色的名称?
【发布时间】:2015-01-21 17:09:08
【问题描述】:

使用 ASP.NET MVC5 用户身份,我试图在视图中显示 IdentityUser 的角色名称。

Identity 用户似乎具有 Roles 属性,它表示 IdentityUserRole 的集合,而不是 IdentityRole。区别在于IdentityUserRole 表示IdentityUserIdentityRole 之间的关联,而IdentityRole 是实际的Role 模型[+]。显然 IdentityUser 和 IdentityRole 之间没有定义导航。所以我们得到的只是来自IdentityUserRole 的 RoleId。

  1. 有没有简单的方法来获取角色名称?
  2. 使用Fluent API,我们是否可以在IdentityRoleIdentityUserRole之间定义一个虚拟导航属性来轻松获取名称 贯穿整个项目?
  3. 如果是有意为之,不让我们直接获取IdentityRole有什么好处?

【问题讨论】:

  • 我建议您在控制器/操作中获取角色并将其作为属性传递给视图,这意味着您传递给视图的模型的一部分。如果不是,您可能需要扩展 IPrincipal 或 IIdentity 属性以包含角色,然后您可以获得类似 HttpContext.Current.User.Identity.Roles 的内容。
  • 我假设您现在已经找到了答案,即使这里什么也没有,所以我想知道它是什么。此时,我将 IdentityRole 对象的字典表示存储在 ViewBag 中,并通过视图代码中的 IdentityUserRole.RoleId 访问它们。它有效,但我对此并不感到兴奋。

标签: entity-framework asp.net-mvc-5 asp.net-identity navigation-properties ef-fluent-api


【解决方案1】:

您可以使用角色管理器在身份中选择用户角色

var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(this.dbcontext));

从用户获取用户角色,然后从该角色中选择名称

roleManager.FindById(user.RoleId).Name

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2019-07-11
    • 1970-01-01
    • 2017-11-13
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2021-05-27
    相关资源
    最近更新 更多