C# 如何在asp core2中正确设置用户标识种子?
我有一个种子类,它一直无法在users表中插入记录 我认为使用CreateAsync是不合适的,因为该方法不是异步的,用户管理器不会对记录进行种子设定。所以我尝试使用散列密码手动进行种子设定,但无法登录。我张贴这两种方法 为什么不在数据库初始化中插入用户信息? 1。使用UserManager CreateAyncC# 如何在asp core2中正确设置用户标识种子?,c#,asp.net-identity,asp.net-core-2.0,seeding,C#,Asp.net Identity,Asp.net Core 2.0,Seeding,我有一个种子类,它一直无法在users表中插入记录 我认为使用CreateAsync是不合适的,因为该方法不是异步的,用户管理器不会对记录进行种子设定。所以我尝试使用散列密码手动进行种子设定,但无法登录。我张贴这两种方法 为什么不在数据库初始化中插入用户信息? 1。使用UserManager CreateAync public void SeedData() { using (var serviceScope = scopeFactory.C
public void SeedData()
{
using (var serviceScope = scopeFactory.CreateScope())
{
using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
{
if (!context.ApplicationUser.Any())
{
var user = new ApplicationUser
{
CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
Email = "maizer85@hotmail.com",
FirstName = "Zaid",
GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
IsActive = true,
LastName = "Abu Maizar",
MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
PersonalPhotoUrl = null,
PhoneNumber = "4243244990",
PhoneNumberConfirmed = false,
PostalCode = 91335,
SocialSecurityNo = "AABBCC",
StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
UserName = "Zaid",
};
userManager.CreateAsync(user, "String@string85");
context.SaveChanges();
}
}
}
}
这里有一个类似的主题: 因此,您需要使用非异步扩展方法。使用Microsoft.AspNet.Identity添加
Microsoft.AspNet.Identity
程序集和
有一个例子:
关于人工播种。我认为您无法登录,因为您正在使用的HashPassword函数与UserManager在检查密码时使用的算法不同
要使其工作,请尝试使用userManager.PasswordHasher.HashPassword(..)
方法而不是函数
在应用程序用户中:
...
PasswordHash = userManager.PasswordHasher.HashPassword("Zaid@core85"),
...
这个实现对我有效
public void SeedData()
{
using (var serviceScope = scopeFactory.CreateScope())
{
using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
{
if (!context.ApplicationUser.Any())
{
var user = new ApplicationUser
{
CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
Email = "maizer85@hotmail.com",
FirstName = "Zaid",
GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
IsActive = true,
LastName = "Abu Maizar",
MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
PersonalPhotoUrl = null,
PhoneNumber = "4243244990",
PhoneNumberConfirmed = false,
PostalCode = 91335,
SocialSecurityNo = "AABBCC",
StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
UserName = "Zaid",
};
Task<IdentityResult> createTask = userManager.CreateAsync(user, "Temp_123");
createTask.Wait();
}
}
}
}
public void SeedData()
{
使用(var serviceScope=scopeFactory.CreateScope())
{
使用(var context=serviceScope.ServiceProvider.GetService())
{
如果(!context.ApplicationUser.Any())
{
var user=新应用程序用户
{
CityId=context.Cities.Where(g=>g.Name==“Abu Nusair”).SingleOrDefault().Id,
CountryId=context.Countries.Where(g=>g.Name==“Jordan”).SingleOrDefault().Id,
电子邮件=”maizer85@hotmail.com",
FirstName=“Zaid”,
GenderId=context.Genders.Where(g=>g.Name==“Female”).SingleOrDefault().Id,
IsActive=true,
LastName=“Abu Maizar”,
MaritalStatusId=context.MaritalStatus.Where(g=>g.Name==“Single”).SingleOrDefault().Id,
NationalityId=context.nations.Where(g=>g.Name==“Jordanian”).SingleOrDefault().Id,
OccupationId=context.Occupations.Where(g=>g.Name==“MD”).SingleOrDefault().Id,
PersonalPhotoUrl=null,
PhoneNumber=“4243244990”,
PhoneNumberConfiged=false,
PostalCode=91335,
社会安全no=“AABBCC”,
StateId=context.States.Where(g=>g.Name==“Amman”).SingleOrDefault().Id,
StatusId=context.Statuses.Where(g=>g.Name==“Active”).SingleOrDefault().Id,
UserName=“Zaid”,
};
任务createTask=userManager.CreateAsync(用户,“Temp_123”);
createTask.Wait();
}
}
}
}
Hasher接受两个参数,this.userManager.PasswordHasher.HashPassword(ApplicationUser,Password)
是的,很抱歉我使用了旧的ASP.NET标识,现在我看到在新的实现中它要求用户和密码。
...
PasswordHash = userManager.PasswordHasher.HashPassword("Zaid@core85"),
...
public void SeedData()
{
using (var serviceScope = scopeFactory.CreateScope())
{
using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
{
if (!context.ApplicationUser.Any())
{
var user = new ApplicationUser
{
CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
Email = "maizer85@hotmail.com",
FirstName = "Zaid",
GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
IsActive = true,
LastName = "Abu Maizar",
MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
PersonalPhotoUrl = null,
PhoneNumber = "4243244990",
PhoneNumberConfirmed = false,
PostalCode = 91335,
SocialSecurityNo = "AABBCC",
StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
UserName = "Zaid",
};
Task<IdentityResult> createTask = userManager.CreateAsync(user, "Temp_123");
createTask.Wait();
}
}
}
}