1. ホーム
  2. asp.net-mvc

[解決済み] MVC 5 シードユーザーとロール

2023-01-09 12:18:55

質問

私は新しいMVC 5で遊んでいます。私はいくつかのモデル、コントローラ、ビューをコードファーストマイグレーションを使ってセットアップしています。

私の質問は、ユーザーとロールをどのようにシードするかということです。私は現在、Configuration.cs の Seed メソッドでいくつかの参照データをシードしています。しかし、私には、何かが最初に AccountController に当たるまで、ユーザーとロールのテーブルが作成されないように見えます。

私は現在、2つの接続文字列を持っているので、認証からデータを異なるデータベースに分離することができます。

どのようにしたら、user、rolesなどのテーブルを他のテーブルと一緒に入力させることができますか?アカウントコントローラーがヒットしたときではなく?

どのように解決するのですか?

通常のSeedのアプローチ例です。

protected override void Seed(SecurityModule.DataContexts.IdentityDb context)
{
    if (!context.Roles.Any(r => r.Name == "AppAdmin"))
    {
        var store = new RoleStore<IdentityRole>(context);
        var manager = new RoleManager<IdentityRole>(store);
        var role = new IdentityRole { Name = "AppAdmin" };

        manager.Create(role);
    }

    if (!context.Users.Any(u => u.UserName == "founder"))
    {
        var store = new UserStore<ApplicationUser>(context);
        var manager = new UserManager<ApplicationUser>(store);
        var user = new ApplicationUser {UserName = "founder"};

        manager.Create(user, "ChangeItAsap!");
        manager.AddToRole(user.Id, "AppAdmin");
    }
}

package-manager "update-database"を使ってみました。DBとすべてのテーブルが作成され、データでシードされました。