【问题标题】:ASP.NET Core add secondary password to IdentityUserASP.NET Core 向 IdentityUser 添加二级密码
【发布时间】:2019-08-03 02:38:59
【问题描述】:

我正在使用带有 EF Core 的 ASP.NET Core 2.2。我有一个User 类,看起来像这样:

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

    public string LastName { get; set; }
}

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

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

【问题讨论】:

标签: c# asp.net-core passwords


【解决方案1】:

您可以使用IPasswordHasher interface,当用户注册时,您可以创建将存储在数据库中的密码哈希(PIN 属性),当您需要验证时,对提供的密码/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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2019-05-10
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多