Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心标识-创建用户“;“手动”;以及提供密码哈希-如何正确生成哈希?_C#_Asp.net Core_Asp.net Core Identity - Fatal编程技术网

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)
{

}