2011-01-31 97 views

回答

15

您可以使用Roles.GetRolesForUser()方法来获取所有rols用户所属的。像这样使用它;

string[] rolesuserbelongto = Roles.GetRolesForUser(); 

您将拥有字符串数组中的所有角色。

你甚至可以通过一个用户名作为参数,以获得角色像这样的特定用户:

string[] rolesuserbelongto = Roles.GetRolesForUser("Shekhar_Pro"); 
+0

什么命名空间有添加为了有“角色”类? – Ixtlan 2013-04-20 22:54:43

0

不能完全确定的你的问题。

你可以这样做:

this.User.IsInRole(); 
//loop and check whether the user is in your role. 

this可能符合page class,这样你就可以只写页面内上面的代码和this.User返回IPrincipal

6

最常用的方法是获取IPrinciple,然后调用IsInRole()。你如何得到原则取决于你的运行环境。此示例适用于在用户帐户下运行的应用程序。

例子:

static void PrintIsInAdministrators() 
    { 
     // There are many ways to get a principle... this is one. 
     System.Security.Principal.IPrincipal principle = System.Threading.Thread.CurrentPrincipal; 
     bool isInRole = principle.IsInRole("MyDomain\\MyRole"); 
     Console.WriteLine("I {0} an Admin", isInRole ? "am" : "am not"); 
    } 
0
string[] userroles = Roles.GetRolesForUser(Page.User.Identity.Name); 
foreach(var role in userroles) 
{ 
Response.Write(role); 
} 
0

Roles.GetRolesForUser();给我的错误The Role Manager feature has not been enabled

如果您正在使用ASP.NET Identity UserManager你可以这样说:

var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); 

var roles = userManager.GetRoles(User.Identity.GetUserId()); 

如果你已经改变了密钥的用户从GUID来INT例如使用此代码:

var roles = userManager.GetRoles(User.Identity.GetUserId<int>()); 
相关问题