将用户身份传递给自定义IPasswordHasher吗?

时间:2018-11-20 17:13:36

标签: asp.net-identity password-hash

我正在创建一个自定义存储,以使用OWIN和ASP.NET Identity登录到我的MVC5站点。

我在我的自定义用户中存储了一个基数为64的密码和基数为64的盐的字段。为了加密密码,我将盐附加到纯文本密码上。

我创建了此密码哈希器:

public class PasswordHasher : IPasswordHasher
{
    public string HashPassword(string password)
    {
        using (SHA1 sha1 = SHA1.Create())
        {
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(password);
            byte[] hashBytes = sha1.ComputeHash(inputBytes);

            // Convert the byte array to hexadecimal string
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hashBytes.Length; i++)
            {
                sb.Append(hashBytes[i].ToString("X2"));
            }
            return sb.ToString();
        }
    }

    public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
    {
        if (hashedPassword == HashPassword(providedPassword))
            return PasswordVerificationResult.Success;
        else
            return PasswordVerificationResult.Failed;
    }
}

这个问题是我没有IdentityUser来连接盐字段。

我不想添加Microsoft.AspNetCore.Identity参考。我知道该库具有接收用户对象的密码哈希器,因此我可以做我想做的事情。但是在这种情况下,我没有用户对象。有办法吗?

谢谢 海梅

0 个答案:

没有答案