【问题标题】:How can i display the Role name for a user in ASP.NET如何在 ASP.NET 中显示用户的角色名称
【发布时间】:2015-09-01 06:50:18
【问题描述】:

我有一个 MasterPage,我在其中显示两件事:一是我使用以下命令显示的用户名 <%: Context.User.Identity.GetUserName() %>,一是用户角色。

如何显示?

谢谢。

【问题讨论】:

  • 当您登录用户时,您会创建其身份 - 不知何故 - 完成后,您还需要在角色中编码。我相信这是一种扩展方法。它们是扩展方法,因为读取身份信息可能是一场噩梦。

标签: c# asp.net asp.net-mvc asp.net-mvc-2 asp.net-membership


【解决方案1】:

如果您可以访问 UserManager,请尝试这样:

UserManager.FindByName(Context.User.Identity.GetUserName()).Roles

或者,如果您有权访问任何基于身份的用户,您也应该能够获得这样的角色:

AppUser.Roles;

或搜索任何具有特定名称的身份用户并获取其角色:

UserManager.FindByName("Name").Roles;

我正在使用 Identity 2.0

更新:

因此,如果您可以在母版页代码中访问 UserManager 和 RoleManager,您可以编写一个方法,获取如下用户角色:

    public List<string> GetUserRoles(string username)
    {
        List<string> ListOfRoleNames = new List<string>();
        var ListOfRoleIds = UserManager.FindByName(username).Roles.Select(x => x.RoleId).ToList();
        foreach(string id in ListOfRoleIds)
        {
            string rolename = RoleManager.FindById(id).Name;
            ListOfRoleNames.Add(rolename);
        }

        return ListOfRoleNames;
    }

然后由您决定如何在视图中调用它或在加载页面时将这些角色填充给用户。

【讨论】:

  • 我的身份版本是 2.2.1。我可以访问 UserManager 但那里没有方法。还有另一种在 MasterPage 中显示用户角色的方法吗?也许在代码中?
  • 为什么不创建一个方法?
【解决方案2】:

当您使用 Web 窗体视图引擎时,我假设您必须使用 asp.net Membership,因为它可用于 MVC 2.0。

一个用户可以有多个角色,下面会循环打印出来:

<% foreach(var role in Roles.GetRolesForUser())
{ %>
     <%:role%>
<% } %>

【讨论】:

    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 2016-09-09
    • 2018-11-11
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2017-07-25
    相关资源
    最近更新 更多