私は、ASP.NET ID(v2.1)とEntity Framework v6.1を利用するWeb Apiソリューションを用意しています。 Configuration.csファイルのSeed()メソッドの中に、私の最初のIdentityユーザーを作成するコードがあります。このコードはアイデンティティ・フレームワークを利用してパスワードをハッシュしたり、セキュリティ・スタンプなどを作成します。これらはすべてSQL経由では行えませんので、Up()
メソッドを追加することはオプションのようには見えません。配備中にSeedメソッド内でコードを実行するにはどうすればよいですか?
protected override void Seed(ApplicationDbContext context)
{
// Create the admin user
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var user = new ApplicationUser()
{
UserName = "adminuser",
Email = "[email protected]",
EmailConfirmed = true,
FirstName = "John",
LastName = "Does",
JoinDate = DateTime.Now.AddYears(-1)
};
manager.Create(user, "SuperSecurePassword321!");
if (roleManager.Roles.Count() == 0)
{
roleManager.Create(new IdentityRole { Name = "Admin" });
roleManager.Create(new IdentityRole { Name = "Employee" });
roleManager.Create(new IdentityRole { Name = "Customer" });
}
var adminUser = manager.FindByName("adminuser");
manager.AddToRoles(adminUser.Id, new string[] { "Admin" });
}
これを公開するにはFTPを使用する必要があります(これを制御する必要はありません)。スキーマが設定されていて、データベースがデプロイされた後にこのコードを実行する方法に関する提案はありますか?
- 私が呼ばれたとき、それはこれを作成されるため、このコードオフ キックが、しかし、このエンドポイントが
anonymous
アクセスを許可しなければならないことをAPIエンドポイントの作成について考えている:私は考えたオプション最初のユーザーと システムで使用されるロール。私は何とか を無効にするか、後でこのエンドポイントを削除する必要があります。
- データベースをスクリプト化してデータを入れてから、展開対象のデータベースサーバー に復元します。
は 'シードメソッドを呼び出すように設定することYourInitializer'てもらえますか? – webworm
私が探しているのは、データベースに初めてアクセスしたときに'Seed() 'メソッドが呼び出されていないということです。私の場合、 'Seed()'メソッドは 'AspNetUsers'テーブルに単一のユーザを作成します。 'Update-Database -Script'コマンドを実行すると、私はスキーマ作成用のSQLを取得します。そのスキーマを使用してデータベースを作成できます。ただし、APIエンドポイントにアクセスしようとすると、呼び出しは失敗します。 APIエンドポイントは、ユーザー名/パスワードを確認するためにデータベースにアクセスする必要があります。ユーザーがいないために失敗します。 – webworm