2015-06-05 7 views
12

Przed aktualizacją z dll w Entity Framework udało mi się to zrobićUzyskaj nazwę rolę w IdentityUserRole 2.0 w ASP.NET

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

Teraz mogę tylko zrobić r.RoleId i mogę” t znaleźć sposób na odzyskanie nazwy thar Role Id. Używam tego w moich kontrolerach i mojej klasie AuthorizeAttribute.

Czy ktoś może mi w tym pomóc?

Pozdrowienia

Odpowiedz

1

Jeśli celem jest sprawdzenie, czy użytkownik jest w roli można uzyskać do niego dostęp z obiektu IPrincipal.User w działaniu

User.IsInRole("Admin"); 
+0

to jest w widoku, a moje pytanie było w backend ... ty i tak – MarBVI

7

Spróbuj

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

jak go wymienić, mam na myśli w widoku – SAR

+0

To bardzo pomogło. Dziękuję, Neeraj. – naz786

+0

Twój gość powitalny! –

0

Właśnie miał almost exactly the same issue i rozwiązać go tak:

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 
} 

teraz oryginalny kod user.Roles.Where(r => r.Role.Name == "Admin").FirstOrDefault(); będzie działać, co może być przydatne, jeśli nie masz łatwego dostępu do RoleManager z jakiegokolwiek powodu.