【问题标题】:ASP.NET MVC 3: How to get User's Role in a Controller Method?ASP.NET MVC 3:如何在控制器方法中获取用户角色?
【发布时间】:2011-05-20 03:29:41
【问题描述】:

我希望能够

  1. 获取当前经过身份验证的用户的角色列表。
  2. 根据角色过滤提供给该用户的数据。

我看到了检查用户是否处于特定角色的方法,但我不在乎他们参与什么角色。数据库将知道允许哪些角色查看哪些数据。我需要将这些角色的集合提交给数据服务,以根据这些角色过滤数据。

那么第一步是如何在控制器方法中获取与当前用户关联的所有角色?

编辑:

这似乎很顺利:

Roles.GetRolesForUser(User.Identity.Name)

仍然欢迎提供支持性答案。

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-membership authorization asp.net-4.0


    【解决方案1】:

    这可以通过一条语句来完成:

    User.IsInRole("admin");
    

    【讨论】:

    • 虽然这确实告诉您用户是否处于特定角色中,但它并没有解决询问如何获取所有用户角色的列表或数组的原始问题。
    【解决方案2】:
    Roles.GetRolesForUser(User.Identity.Name)
    

    【讨论】:

    • 你自己的问题回答了吗?
    • 嗯,它永远在那里,所以我可以删除它,或者回答它。 :)
    • 当有人来搜索时,最好让某人回答自己的问题,而不是没有明确定义的答案。谢谢你这样做。
    【解决方案3】:

    如果有人需要此信息,以防您的用户有多个角色但您正在寻找一个,您可以这样做:(我认为是 id 共享)

    @if (Request.IsAuthenticated)
    {
       string[] roles = Roles.GetRolesForUser();
       foreach (string role in roles)
       {
           if (role.Contains("admin"))
           {
               <li>@Html.ActionLink("Administration", "Admin", "Movies")</li>
               break;
           }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 2012-09-18
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多