1

目前我正在寻找在ActionResult. 具体来说,如果密码被更改,我想公开调用我的 SHA512 方法ActionResult Edit(User user)来散列密码。

这是该Edit方法的代码:

    [HttpPost]
    public ActionResult Edit(User user)
    {
        if (ModelState.IsValid)
        {
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(user);
    }

我实际上是 ASP.NET 的新手,我真的不知道如何调用此方法来散列新密码,如果有的话:

    public static string SHA512(string value)
    {
        byte[] result;
        SHA512 sha512 = new SHA512Managed();
        result = sha512.ComputeHash(Encoding.Default.GetBytes(value));

        string hash = BitConverter.ToString(result).Replace("-", String.Empty); 

        return hash;
    }
4

1 回答 1

0

您首先从数据库中获取模型,然后在其上调用 TryUpdateModel 来更新模型。u然后添加从数据库中获取的用户 ( ) 的新密码哈希并保存他。

旁注:使用 SHA 散列密码非常糟糕,因为算法很快。尝试PBKDF2改用。

[HttpPost]
public ActionResult Edit(User user)
{
    var u = db.Users.Single(x => x.Id == user.Id);

    if (TryUpdateModel(u))
    {
        u.Password = SHA512(user.Password)
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(user);
}
于 2013-06-08T18:51:58.740 回答