アイデンティティとASP.NETコアRC2を持つエンティティフレームワークのコアは、データベースにユーザーを作成しません

asp.net-core entity-framework-core

質問

私は認証でアプリケーションを開発中です。私は以下のフレームワークを使用しています:

  • ASP.NET Core RC2
  • エンティティフレームワークコア
  • Npgsql EFCoreドライバ

シードのために、 DataSeederクラスを作成しました。 DataSeederConfigureServices関数でTransient Serviceとして追加され、後でConfigureServices関数で呼び出されます。 IdentityUserが存在するかどうかをチェックし、存在しない場合はadminという名前のAdminUserを作成し、管理者ロールをAdminUserに追加します。

ただし、ユーザーにロールを追加すると、外部キー制約が違反し、ASP_NET_USERSにそのPKのエントリが含まれていないという例外が表示されます。

私はデータベースをチェックしましたが、実際に作成した新しいロールが含まれていますが、ユーザーテーブルはまだ空です。

ここに私のDataSeederクラスがあります:

public class DataSeeder {
    private DatabaseContext _context;
    private UserManager<IdentityUser> _userManager;
    private RoleManager<IdentityRole> _roleManager;

    public DataSeeder(DatabaseContext ctx, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager) {
        _context = ctx;
        _userManager = userManager;
        _roleManager = roleManager;
    }

    public async Task CreateUserAsync() {
        if (! await _userManager.Users.AnyAsync()) {
            var adminRole = new IdentityRole("admin");
            var rootRole = new IdentityRole("root");

            await _roleManager.CreateAsync(adminRole);
            await _roleManager.CreateAsync(rootRole);

            var user = new IdentityUser {
                Email = "blabla@example.com",
                EmailConfirmed = true,
                UserName = "superadmin"
            };

            await _userManager.CreateAsync(user, "P@SSWORD");

            await _userManager.AddClaimAsync(user, new Claim("role", "admin"));
        }
    }
}

したがって、例外はAddClaimAsyncでスローされAddClaimAsync 。どんな助けでも本当に感謝しています

受け入れられた回答

_userManager.createAsyncの結果を確認してください。

var result = await _userManager.CreateAsync(user, "P@SSWORD");

if (!result.Succeeded)
{
    // something went wrong, inspect the errors
}

IdentityUser必須プロパティが見つからないか、パスワードが無効である可能性が最も高いでしょう。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ