私は認証でアプリケーションを作成しています。私は、次のフレームワークを使用しています:エンティティフレームワークIDとASP.NETのコアコアRC2がデータベースにユーザーを作成していません
- ASP.NETコアRC2
- Entity Frameworkのコア
- NpgsqlのEFCoreドライバ
を播種するために、私は一時的なものとして追加さDataSeeder
クラスを作成しましたサービスはConfigureServices
機能にあり、後で構成機能で呼び出されます。 IdentityUser
が存在するかどうかをチェックし、存在しない場合は、adminという名前のロールを作成し、Adminロールを追加します。
ただし、ユーザーにロールを追加すると、外部キー制約が違反し、ASP_NET_USERSにそのPKのエントリが含まれていないという例外が表示されます。
私はデータベースをチェックしましたが、作成した新しいロールが実際に含まれていますが、ユーザーテーブルはまだ空です。
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 = "[email protected]",
EmailConfirmed = true,
UserName = "superadmin"
};
await _userManager.CreateAsync(user, "[email protected]");
await _userManager.AddClaimAsync(user, new Claim("role", "admin"));
}
}
}
だから、例外がAddClaimAsync
でスローされます。ここでは
は私DataSeeder
クラスです。どんな助けも本当にありがたいです
私は今は見ることができませんが、IIRC createAsyncは結果オブジェクトを返し、作成されていない理由を確認できます。私はそれがパスワードの複雑さまたはそのようなもののためだと思います。 – RubbleFord