ASP.NET MVC 3:如何在控制器方法中获得用户的角色?

时间:2011-05-20 03:29:41

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

我希望能够

  1. 获取当前经过身份验证的用户的角色列表。
  2. 根据用户的角色过滤提供给该用户的数据。
  3. 我看到了检查用户是否处于特定角色的方法,但我不关心他们参与的角色。数据库将知道允许哪些角色查看哪些数据。我需要向数据服务提交这些角色的集合,以根据这些角色过滤数据。

    首先,我如何在控制器方法中获取与当前用户关联的所有角色?

    编辑:

    这似乎很有效:

    Roles.GetRolesForUser(User.Identity.Name)
    

    支持答案仍然受到欢迎。

3 个答案:

答案 0 :(得分:23)

Roles.GetRolesForUser(User.Identity.Name)

答案 1 :(得分:13)

这可以通过一个声明来完成:

User.IsInRole("admin");

答案 2 :(得分:10)

如果有人需要这些信息,如果你的用户有很多角色,但你正在寻找一个,你可以这样做:(我认为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;
       }
   }
}