【发布时间】:2019-09-13 02:55:12
【问题描述】:
我正在将数以万计的用户从数据库中没有密码的旧网站迁移到这个新的 Web 应用程序,但是,当我尝试使用异步方法导入用户时,最终需要花费几个几天后我就取消了。
现在我只需要直接从 _context.Users.Add 创建新用户并分配他们的角色,我可以毫无问题地做到这一点。但是,我似乎无法弄清楚如何创建通用密码(所有相同的密码)因为这些用户只会获得一个密码来查看直播(不需要超级安全),但我仍然需要管理员帐户的安全部分,通过客户端/管理员端处理其他内容用户界面。如果用户登录,我会让它自动为他们输入默认密码。
但由于某种原因,我无法让密码散列器正常工作,因为当我登录时,它说密码错误...
这是我用来生成密码和创建用户的...
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();
谁能帮我解决我应该如何散列密码以存储到数据库中?
【问题讨论】:
标签: asp.net-core identityserver4 asp.net-core-identity