gpt4 book ai didi

c# - 身份 2 的种子数据库

转载 作者:可可西里 更新时间:2023-11-01 07:42:50 27 4
gpt4 key购买 nike

我遇到了使用 Identity v2 为数据库播种的问题。我将 IdentityModel 从 MVC5 项目分离到我的数据访问层,我也在其中设置了 EF 迁移。所以我注释掉了在“IdentityConfig.cs”中用于创建初始用户的代码,并将代码放入我的种子数据库中,如下所示

  protected override void Seed(Repository.DataContext.IdentityDb context)
{

// var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
// var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
var owinContext = new OwinContext();
var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var roleManager = owinContext.Get<ApplicationRoleManager>();
const string name = "admin@admin.com";
const string password = "Admin@123456";
const string roleName = "Admin";

// //Create Role Admin if it does not exist
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}

var user = userManager.FindByName(name);
if (user == null)
{
user = new ApplicationUser { UserName = name, Email = name };
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);
}
}

现在当我运行命令 update-database 时,出现错误

Value cannot be null.
Parameter name: manager

看起来,我在这两行代码中得到了null

var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var roleManager = owinContext.Get<ApplicationRoleManager>();

有什么建议吗?

最佳答案

这是避免使用 OWIN 上下文的方法:

protected override void Seed(Repository.DataContext.IdentityDb context)
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
var user = new ApplicationUser { UserName = "sallen" };

userManager.Create(user, "password");
roleManager.Create(new IdentityRole { Name = "admin" });
userManager.AddToRole(user.Id, "admin");
}

关于c# - 身份 2 的种子数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com