gpt4 book ai didi

asp.net-identity - ASP>NET 标识 : How to compare a password entered by the user with a hashed password?

转载 作者:行者123 更新时间:2023-12-03 23:40:10 25 4
gpt4 key购买 nike

我创建了一个名为 PasswordHistory 的表.每次用户更改密码时,都应该将当前密码复制到 PasswordHistory 表中。该政策是以下 2 项中最严格的:

  • 用户不能使用最后 8 个密码中的任何一个
  • 或在过去 2 年内使用过的密码

  • 我想知道如何将新输入的密码与现有密码进行比较,但该密码已散列?

    这是我的代码:
    var _limitDate = DateTime.Now.AddYears(-2);
    int n = db.PasswordsHistory.Where(pwd => pwd.UserId == userId && pwd.ChangeDate > _limitDate).Count();

    var pwdList = new List<PasswordHistory>();
    if(n >= 8)
    {
    pwdList = db.PasswordsHistory
    .Where(pwd => pwd.ChangeDate > _limitDate)
    .ToList();
    }
    else
    {
    pwdList = db.PasswordsHistory
    .OrderByDescending(pwd => pwd.ChangeDate)
    .Take(8)
    .ToList();
    }

    if (pwdList.Count == 0)
    {
    return false;
    }
    else
    {
    foreach (var pwd in pwdList)
    {
    //compare the password entered by the user with the password stored in the PasswordHistory table
    }
    }

    谢谢你的帮助

    最佳答案

    请仅在历史记录中存储密码哈希。您可以通过 PasswordHasher.VerifyHashedPassword(string hashedPassword, string providedPassword) 将旧的哈希值与提供的密码进行比较。 - 那是身份的一部分。

    关于asp.net-identity - ASP>NET 标识 : How to compare a password entered by the user with a hashed password?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143780/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com