ASP.NET 核心向 IdentityUser 添加二级密码

ASP.NET Core add secondary password to IdentityUser

我正在使用 ASP.NET Core 2.2 和 EF Core。我有一个 User class 看起来像这样:

public class User : IdentityUser
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

我想添加一个 PIN 属性 作为额外安全操作的辅助密码。用户登录系统,但如果他想做一些更特殊的事情(比如汇款),系统会提示他输入他的 PIN。

我的问题是散列字符串的最简单方法是什么,所以我不在数据库中以纯文本形式存储 PIN?

您可以使用IPasswordHasher interface,当用户注册时,您可以创建将存储在数据库中的密码散列(PIN 属性),当您需要验证时,散列提供的 password/PIN 并将其与存储的哈希进行比较。

例如使用DI涉及后缀:

public readonly IPasswordHasher<ApplicationUser> _passwordHasher;
public HomeController(IPasswordHasher<ApplicationUser> passwordHasher )
{
    _passwordHasher = passwordHasher;
}

创建散列密码:

var hasedPassword = _passwordHasher.HashPassword(null,"Password");

验证:

var successResult = _passwordHasher.VerifyHashedPassword(null, hasedPassword , "Password");

您也可以参考文档:Hash passwords in ASP.NET Core.