Asp.net

如何在 Asp.Net Identity 中獲取使用者的角色名稱

  • January 12, 2018

我試圖弄清楚如何在身份框架中找到使用者角色名稱。

我有這樣的配置,只有一個角色分配給一個使用者。

所以,我嘗試使用

public string GetUserRole(string EmailID, string Password)
{
   var user = await _userManager.FindAsync(EmailID, Password);
   var roleid= user.Roles.FirstOrDefault().RoleId;
}

但我得到的只是 RoleId 而不是 RoleName。

誰能幫我找到使用者的 RoleName 嗎?

在您的程式碼中, user對象表示AspNetUsers具有導航屬性的表,該屬性Roles表示AspNetUserInRoles表而不是AspNetRoles表。因此,當您嘗試瀏覽

user.Roles.FirstOrDefault()

它為您提供了AspNetUserInRoles哪些儲存 UserId 和 RoleId。

相反,您可以嘗試UserManger’sGetRoles方法,該方法將返回您List<string>分配的角色使用者。但是正如您所提到的,它只是一個角色,因此您可以從GetRoles方法的結果中獲取第一個值。

您的功能應該類似於下面給出的功能:

public async string GetUserRole(string EmailID, string Password)
{
   var user = await _userManager.FindAsync(EmailID, Password);
   string rolename = await _userManager.GetRoles(user.Id).FirstOrDefault();
   return rolename;
}

引用自:https://stackoverflow.com/questions/45674776