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.
我正在使用 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.