Использование bcrypt для получения хешированного пароля из базы данных - PullRequest
0 голосов
/ 25 сентября 2019

Я хэшировал пароль с помощью bcrypt, хешируется пароль, но когда я пытался проверить пароль во время входа в систему, я не получаю хешированный пароль базы данных, как я могу получить хешированный пароль базы данных и проверить его с помощью заданного пароля поля ввода.. Here is my login and sign up code[My Membership class from where I am getting the login data][1]

public ActionResult Login()
{

    return View();
}

[HttpPost]
public ActionResult Login(Models.Membership membership, User user)
{
    using (var context = new dbTournamentEntities())
    {
        //bool isValid = context.Users.Any(m => m.UserName == membership.UserName && m.Password == membership.Password);
        //string passwordHash = BCrypt.Net.BCrypt.HashPassword(user.Password, GetRandomSalt());

        //string passwordHash = HashPassword(membership.Password);

        //bool isValid = context.Users.Any(m => m.UserName == membership.UserName && m.Password == passwordHash);

        bool isValid = ValidatePassword(membership.Password, user.Password);

        if (isValid)
        {
            FormsAuthentication.SetAuthCookie(membership.UserName, false);
            return RedirectToAction("Index", "Teams");
        }

        ModelState.AddModelError("", "Invalid UserName and Password");
        return View();
    }

}

public ActionResult Signup()
{
    return View();
}

[HttpPost]
public ActionResult Signup(User user)
{
    using (var context = new dbTournamentEntities())
    {
        var hashpass = HashPassword(user.Password);
        user.Password = hashpass;
        context.Users.Add(user);
        context.SaveChanges();
    }
    return RedirectToAction("Login");
}

public ActionResult Logout()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Login");
}

private static string GetRandomSalt()
{
    return BCrypt.Net.BCrypt.GenerateSalt();
}

public static string HashPassword(string password)
{
    return BCrypt.Net.BCrypt.HashPassword(password, GetRandomSalt());
}

public static bool ValidatePassword(string password, string correctHash)
{
    return BCrypt.Net.BCrypt.Verify(password, correctHash);
}
...