2015-06-05 14 views
12

Prima dell'aggiornamento delle DLL in Entity Framework sono stato in grado di fare questoGet nome Ruolo nel IdentityUserRole 2.0 in ASP.NET

user.Roles.Where(r => r.Role.Name == "Admin").FisrtOrDefault(); 

Ora, posso solo fare r.RoleId, e posso' t trovare un modo per recuperare il nome di thar Role Id. Lo sto usando nei miei controller e nella mia classe AuthorizeAttribute.

Qualcuno può aiutarmi qui?

saluti

risposta

8

chiedere al RoleMananger?

RoleManager.Roles. 
// or 
RoleManager.FindByIdAsync() 
// or 
RoleManager.FindByNameAsync() 

Si consiglia di richiedere un certo tempo e imparare le nuove caratteristiche di sicurezza in Asp.Net Security e Asp.Net Identity.

1

Se il vostro scopo è quello di verificare se un utente è in un ruolo è possibile accedervi dall'oggetto IPrincipal.User in un'azione

User.IsInRole("Admin"); 
+0

questo è nella vista, e la mia domanda era nel backend ... ty comunque – MarBVI

7

Prova questo

string id = UserManager.FindByEmail(model.Email).Id; 
IList<string> roleNames=UserManager.GetRoles(id); 
+0

come elencarlo ora, voglio dire in vista – SAR

+0

Questo ha aiutato molto. Grazie Neeraj. – naz786

+0

il tuo amico benvenuto! –

0

ho appena aveva almost exactly the same issue ed ho risolto in questo modo:

public class UserRole : IdentityUserRole 
{ 
    public virtual Role Role { get; set; } // add this to see roles 
    public virtual User User { get; set; } // add this to see users 
} 

Ora il vostro codice originale user.Roles.Where(r => r.Role.Name == "Admin").FirstOrDefault(); funzionerà, che potrebbe essere utile se non si ha un facile accesso allo RoleManager per qualsiasi motivo.