目前我正在寻找在ActionResult
中散列密码的可能性。
具体来说,我想在公共ActionResult Edit(User user)
中调用我的SHA512方法,以便在密码更改时对其进行哈希处理。
以下是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;
}
答案 0 :(得分: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);
}