Pertanyaan Cara mendapatkan ID Peran di mana pengguna terdaftar di MVC 5


Saya mencoba untuk mendapatkan IList<ApplicationRole> peran di mana pengguna saat ini terdaftar.

Sekarang di kelas Usermanager saya melihat ada panggilan fungsi IList<String> usersRoles = userManager.GetRoles(id); Tapi itu hanya mengembalikan nama Peran sebagai string. Ini tidak membantu saya karena saya membutuhkan id , name dan description dari peran tersebut.

Bagaimana saya bisa melakukan panggilan serupa tetapi menerima kembali aplikasiRole dan bukan string?

di sini adalah model saya:

   public class ApplicationRole : IdentityRole
{
    [Display(Name = "Description")]
    [StringLength(100, MinimumLength = 5)]
    public string Description { get; set; }

}

4
2018-02-04 06:31


asal


Jawaban:


Saya pikir Anda perlu query ApplicationDbContext untuk itu karena tidak ada cara yang jelas untuk mendapatkannya dengan satu panggilan dari UserManager atau UserStore Lebah...

var context = new ApplicationDbContext();
var roles = await context.Users
                    .Where(u => u.Id == userId)
                    .SelectMany(u => u.Roles)
                    .Join(context.Roles, ur => ur.RoleId, r => r.Id, (ur, r) => r)
                    .ToListAsync();

8
2018-02-04 07:27



Saya pikir Anda sedang mencari RoleManager. Ini sangat mirip dalam bentuk dan fungsi UserManager, tetapi secara khusus ditujukan untuk CRUD dengan peran.

var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));

Dimana context adalah contoh dari Anda DbContext.

Kemudian, Anda dapat melakukan:

var role = await RoleManager.FindByIdAsync(roleId);

Atau

var role = await RoleManager.FindByNameAsync(roleName); 

8
2018-02-04 08:30