我正在将数万名用户从没有在数据库中存储密码的旧网站迁移到这个新的网络应用程序,但是当我尝试使用异步方法导入用户时,它最终需要几天的时间,以至于我只能在几天后取消它。
现在,我只能直接从_context.Users.Add创建新用户并分配其角色,这一点我可以轻松完成。 但是,我似乎无法找出如何创建通用密码(所有用户的密码相同),因为这些用户只需获得观看直播的密码(不需要超级安全),但是对于处理客户端/管理端UI中的其他内容的管理员账户仍需要安全部分。如果用户登录,我将自动为他们输入默认密码。
但是,由于某种原因,我无法使密码哈希程序正常工作,因为当我登录时,它会显示密码错误...
以下是我用来生成密码和创建用户的代码...
var appUser = new ApplicationUser() {
Id = GenerateId(),
AccessFailedCount = 0,
Email = user[1],
PasswordHash = "",
FullName = "Standard User",
UserName = user[1],
PhoneNumber = user[8],
FirstName = user[2],
LastName = user[3],
JoinMailingList = user[4],
Country = user[5],
City = user[6],
StateRegion = user[7]
};
_context.Users.Add(appUser);
var options = new PasswordHasherOptions();
options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2;
var hasher = new PasswordHasher < ApplicationUser > ();
appUser.PasswordHash = hasher.HashPassword(appUser, "Default8!");
var role = _context.Roles.FirstOrDefault(r => r.Name == "user");
if (role != null) {
var userRole = new IdentityUserRole < string > ();
userRole.RoleId = role.Id;
userRole.UserId = appUser.Id;
_context.UserRoles.Add(userRole);
}
}
_context.SaveChanges();
有人能帮我解决如何将密码哈希化以存储到数据库中的问题吗?