C# ASP.NET核心标识-创建用户“;“手动”;以及提供密码哈希-如何正确生成哈希?
我必须手动创建用户:C# ASP.NET核心标识-创建用户“;“手动”;以及提供密码哈希-如何正确生成哈希?,c#,asp.net-core,asp.net-core-identity,C#,Asp.net Core,Asp.net Core Identity,我必须手动创建用户: var user = new User { Name = "Joe", Email = "test@****.com", PasswordHash = "gdfgdfgre2132143xcxzvb==" } context.Users.Add(user); 但问题是,当我试图登录到该帐户时,我的密码不起作用 我复制了我知道密码的用户帐户的密码散列,然后我将其粘贴到新用户,并尝试使用相同的密码,但无效-密码登录失败 所以我想问-我的逻辑有什么问题
var user = new User
{
Name = "Joe",
Email = "test@****.com",
PasswordHash = "gdfgdfgre2132143xcxzvb=="
}
context.Users.Add(user);
但问题是,当我试图登录到该帐户时,我的密码不起作用
我复制了我知道密码的用户帐户的密码散列,然后我将其粘贴到新用户,并尝试使用相同的密码,但无效-密码登录失败
所以我想问-我的逻辑有什么问题,我如何才能让它工作
它是否与SecurityStamp相关?如果要手动添加用户,还应设置
NormalizedUserName
属性。此外,最好使用IPasswordHasher接口
对密码进行哈希:
注入的服务:
private readonly ApplicationDbContext _context;
public readonly IPasswordHasher<IdentityUser> _passwordHasher;
public HomeController( ApplicationDbContext dbContext, IPasswordHasher<IdentityUser> _passwordHasher)
{
this._context = dbContext;
this._passwordHasher = _passwordHasher;
}
您还可以使用UserManager.CreateAsync
在备份存储中使用给定密码创建指定用户:
var user = new IdentityUser { UserName = "Joe", Email = "wx@hotmail.com" };
var result = await _userManager.CreateAsync(user, "YourPassWord");
if (result.Succeeded)
{
}
注意:您应该在登录时提供
Email
值。问题是,我在测试中创建了这个帐户,并注入了所有与真实身份相关的类,这对我来说很痛苦,您可以手动使用与提供商相关的属性。谢谢!显然,创建PasswordHasher实例不需要任何其他依赖项—一切都很好!
var user = new IdentityUser { UserName = "Joe", Email = "wx@hotmail.com" };
var result = await _userManager.CreateAsync(user, "YourPassWord");
if (result.Succeeded)
{
}