首頁 > 資料庫 > mysql教程 > 如何有效率地檢索.NET Core 2.1身分使用者及其關聯角色?

如何有效率地檢索.NET Core 2.1身分使用者及其關聯角色?

Linda Hamilton
發布: 2024-12-17 15:40:11
原創
730 人瀏覽過

How to Efficiently Retrieve .NET Core 2.1 Identity Users and Their Associated Roles?

取得.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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板