没有的UserManager在Asp.Net核心身份
问题描述:
上的ASP.NET 1.1的核心应用与ASP.NET身份创建用户我创建了一个用户:没有的UserManager在Asp.Net核心身份
PasswordHasher<User> hasher = new PasswordHasher<User>();
User user = new User {
Email = "[email protected]",
Username = "[email protected]
};
user.PasswordHash = hasher.HashPassword(user, "johnpass");
context.Users.Add(user);
context.SaveChanges();
创建用户,但是当我尝试使用签名以下它失败:
SignInResult result = await _signInManager.PasswordSignInAsync("[email protected]", "johnpass", false, true);
然后我试着用的UserManager创建用户:
PasswordHasher<User> hasher = new PasswordHasher<User>();
User user = new User {
Email = "[email protected]",
Username = "[email protected]
};
await userManager.CreateAsync(user, "johnpass");
现在我能登录。看起来问题是使用HashPassword方法。
有没有人知道如何在没有UserManager的情况下创建用户?
UPDATE
我尝试没有晕晕的注入,因为我创建一个控制台应用程序我的测试数据,而不是在Web应用程序创建的UserManager:
var userStore = new UserStore(Context);
var userManager = new UserManager<User>(userStore, null, null, null, null, null, null, null, null);
创建的用户,但我我仍然无法登录。
答
请按照以下方案进行登录。
使用的用户名或电子邮件获得用户。
user = context.Users.FirstOrDefault(usr => usr.UserName == userName);
检查该用户是否有这个密码或不使用:
userManager.CheckPasswordAsync(user, password);
其中的UserManager是UserManager<User>
答
一个对象,你必须做以下事情:
userManager.UpdateSecurityStampAsync(domainUser);
domainUser.NormalizedUserName = domainUser.NormalizedEmail = domainUser.UserName = domainUser.Email;
await userManager.UpdateNormalizedUserNameAsync(domainUser);
await userManager.UpdateNormalizedEmailAsync(domainUser);
await userManager.UpdateAsync(domainUser);
如果您在您的配置电子邮件中设置确认
var token = await userManager.GenerateEmailConfirmationTokenAsync(domainUser);
await userManager.ConfirmEmailAsync(domainUser, token);
这不仅仅是密码散列,还包括安全印章。 – DavidG
安全印章?你能给我一个例子如何解决它? –
那么你已经得到了答案:使用'UserManager' – DavidG