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

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

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 内に組み込みの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート