取得.NET Core 2.1 Identity 使用者和關聯角色
在.NET Core Identity 中,檢索使用者及其關聯角色可能具有挑戰性。雖然早期版本的 Identity 在 ApplicationUser 中提供了內建 Roles 屬性,但此功能已不再存在。
解決方案
要解決此問題,請實施以下操作解決方案:
ApplicationUser
public class ApplicationUser : IdentityUser { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
ApplicationUserRol e
public class ApplicationUserRole : IdentityUserRole<string> { public virtual ApplicationUser User { get; set; } public virtual ApplicationRole Role { get; set; } }
ApplicationRole
public class ApplicationRole : IdentityRole { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
ApplicationDbContext (新增關係,設定種子)
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserClaim<string>, ApplicationUserRole, IdentityUserLogin<string>, IdentityRoleClaim<string>, IdentityUserToken<string>> { public DbSet<ApplicationUserRole> UserRoles { get; set; } // migrations omitted for brevity }
啟動
services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders();
Razor 頁面代碼(立即載入相關資料)
this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();
ASP 核心2.2更新
對於 ASP Core 2.2 及更高版本,固有於 IdentityUserRole
我嘗試遵循建議的解決方案,但導致錯誤:“'field'中的未知列'u.Roles.ApplicationUserId'列表''。為了解決這個問題,我研究了GitHub 評論/問題並實作了上述解決方案。中的模型建構器新增自訂配置。
以上是如何有效率地檢索.NET Core 2.1身分使用者及其關聯角色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!