ホームページ >データベース >mysql チュートリアル >.NET Core 2.1 ID ユーザーとその関連ロールを効率的に取得するにはどうすればよいですか?

.NET Core 2.1 ID ユーザーとその関連ロールを効率的に取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-17 15:40:11817ブラウズ

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

.NET Core 2.1 Identity ユーザーと関連ロールの取得

.NET Core Identity では、ユーザーとその関連ロールの取得が困難な場合があります。 Identity の以前のバージョンでは、ApplicationUser 内に組み込みの Rolles プロパティが提供されていましたが、この機能は現在存在しません。

解決策

この問題に対処するには、次のコードを実装します。解決策:

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 から固有文字列ではありません。さらに、移行を成功させるには、ModelBuilder のコードを削除する必要がある場合があります。

提案された解決策に従おうとしましたが、次のエラーが発生しました: 「フィールドに不明な列 'u.Roles.ApplicationUserId'」リスト''。これを解決するために、GitHub のコメント/問題を調査し、上記で概説した解決策を実装しました。主な変更には、新しい ApplicationUserRole クラスと ApplicationRole クラスの作成、新しい関係を反映するための ApplicationUser クラスの更新、DbContext のモデル ビルダーへのカスタム構成の追加が含まれます。ユーザーの UserRoles を読み込み、次に UserRole のロールを読み込み、ユーザーとその関連ロールを正常に取得することができました。

以上が.NET Core 2.1 ID ユーザーとその関連ロールを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。