在context.user中查找所有角色

时间:2014-01-23 09:44:01

标签: c# asp.net validation authentication security-roles

我必须检查用户的所有角色。当前我正在检查isinrole。 但我想找到所有的角色。隐藏显示一些数据。

 if (Context.User.IsInRole("Travel_Admin"))
                    {
                        visibleTables.Remove(item_level10);
                        visibleTables.Add(item_level1);
                        visibleTables.Add(item_level2);
                        visibleTables.Add(item_level3);
                        visibleTables.Add(item_level4);
                        visibleTables.Add(item_level5);
                    }
                    else
                    {
                        visibleTables.Remove(item_level1);
                        visibleTables.Remove(item_level2);
                        visibleTables.Remove(item_level3);
                        visibleTables.Remove(item_level4);
                        visibleTables.Remove(item_level5);
                        visibleTables.Remove(item_level12);
                        visibleTables.Remove(item_level10);
                    }

我需要在context.user中找到该特定用户的所有角色。 注意:我是基于角色的身份验证的初学者。

2 个答案:

答案 0 :(得分:2)

如果您需要查找用户的所有角色,请使用以下命令:

Roles.GetRolesForUser()

它将为您提供其所有角色的字符串数组。您可以为mtehod指定用户。

您可以在以下方法中使用它:

foreach(string role in Roles.GetRolesForUser())
{
   // do treatment for this role of the user
}

有关此方法,请参阅此处的文档:http://msdn.microsoft.com/en-us/library/system.web.security.roles.getrolesforuser.aspx

在MX2解决方案中,您可以浏览定义的所有类型的角色,而不仅仅是此用户角色!

您可以在MSDN中找到角色方法:http://msdn.microsoft.com/en-us/library/System.Web.Security.Roles_methods.aspx

答案 1 :(得分:0)

试试这个:

 foreach (var item in Roles.GetAllRoles())
 {
      if(Context.User.IsInRole(item))
      {
            //code
      }
      else
      {
            //code
      }
 }