2011-01-31 12 views

Odpowiedz

15

Możesz użyć metody Roles.GetRolesForUser(), aby uzyskać wszystkie role użytkowników. używaj go w ten sposób;

string[] rolesuserbelongto = Roles.GetRolesForUser(); 

będziesz mieć wszystkie role w tablicy ciągów.

można nawet przekazać nazwę użytkownika jako parametr dostać role dla danego użytkownika w taki sposób:

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

Co nazw musi zostać dodany, aby mieć klasę "Role"? – Ixtlan

+0

@Ixtlan - przy użyciu System.Web.Security; – Avital

0

Nie całkowicie pewny, że pytanie.

można zrobić:

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

this by odpowiadać page class, więc można napisać powyższy kod tylko wewnątrz strony i this.User zwraca IPrincipal.

6

Najbardziej ogólną metodą jest uzyskanie IPrinciple, a następnie wywołanie IsInRole() na nim. Sposób, w jaki zasada jest zależna od środowiska wykonawczego. Ten przykład działa dobrze w przypadku aplikacji działających na koncie użytkownika.

Przykład:

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(); dał mi błąd The Role Manager feature has not been enabled.

Jeśli używasz ASP.NET Identity UserManager można dostać to tak:

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

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

Jeśli zmieniono klucz dla użytkownika z GUID int na przykład użyć tego kodu:

var roles = userManager.GetRoles(User.Identity.GetUserId<int>()); 
Powiązane problemy