我正在尝试播种由 ASP.NET MVC Web应用程序生成的ApplicationUser。
但不是用户将使用我的初始值设定项添加。知道吗?
身份配置.cs
public class ApplicationUserStore : UserStore<ApplicationUser>
{
public ApplicationUserStore()
: base(new ApplicationUserDbContext())
{ }
}
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(ApplicationUserStore store)
: base(store)
{
}
}
应用程序用户初始值设定项.cs
public class ApplicationUserInitializer : DropCreateDatabaseAlways<ApplicationUserDbContext>
{
protected override void Seed(ApplicationUserDbContext context)
{
using (var sotre = new ApplicationUserStore())
using (var manager = new ApplicationUserManager(sotre))
{
manager.CreateAsync(new ApplicationUser
{
UserName = "myname"
}, "P@ssword!");
}
}
}
这就是它为我工作的方式。身份模型:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
{
}
static ApplicationDbContext()
{
Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
//dbsets and modelbuilder
身份配置:
public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context)
{
InitializeIdentityForEF(context);
base.Seed(context);
}
//Create User=Admin@Admin.com with password=Admin@123456 in the Admin role
public static void InitializeIdentityForEF(ApplicationDbContext db)
{
var roleStore = new RoleStore<IdentityRole>(db);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var userStore = new UserStore<ApplicationUser>(db);
var userManager = new UserManager<ApplicationUser>(userStore);
const string name = "admin@example.com";
const string password = "Admin@123456";
const string roleAdmin = "Admin";
const string roleEmployeer = "Employeer";
const string roleCandidate = "Candidate";
//just seed whatever here
var user = userManager.FindByName(name);
if (user == null)
{
user = new ApplicationUser { UserName = name, Email = name, dateReg = DateTime.Now };
var result = userManager.Create(user, password);
result = userManager.SetLockoutEnabled(user.Id, false);
}
// Add user admin to Role Admin if not already added
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name);
}