このユーザーアカウントは、Entity Frameworkの移行、特にSeed(...)
メソッドを使用して簡単にシードできます。移行で
を使用すると、次のラインに沿ってConfiguration
クラスを作成することができ、有効:
public sealed class Configuration : DbMigrationsConfiguration<YourEFContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
ContextKey = "YourEFContext";
}
/// <summary>
/// This method will be called after migrating to the latest version.
/// </summary>
/// <param name="context"></param>
protected override void Seed(YourEFContext context)
{
CreateUserIfNotExists(context, "[email protected]", "the_password");
}
/// <summary>
/// Just call directly into ASP.Net Identity to check if the user exists
/// If not, create them
/// </summary>
private static void CreateUserIfNotExists(YourEFContext context, string email, string password)
{
// Use your application user class here
var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
// We're using email for the username
if ((um.FindByEmail(email)) == null)
{
var au = new ApplicationUser
{
UserName = email,
Email = email
};
var res = um.Create(au);
if (res.Succeeded)
{
um.AddPassword(au.Id, password);
}
else
{
Console.WriteLine("Failed to create user: {0}", res.Errors.FirstOrDefault());
}
}
}
}
、Seed(...)
は、すべての移行の最後に実行されますので、我々は、単に私達のユーザーが存在するかどうかを確認します存在しない場合は作成し、既知のパスワードを割り当てます。
私は質問を正しく理解しているかどうかはわかりませんが、Webアプリケーションの起動時にユーザーを確認して、それがまだ存在しない場合は作成してください。 –
これは良いアイデアのように聞こえる! – Turo
EFでCode Firstを使用している場合は、簡単にユーザーをシードできます。 –