代码优先 - 验证密码并使用相同的实体进行哈希处理

本文关键字:实体 处理 哈希 验证 密码 代码 | 更新日期: 2023-09-27 18:36:08

  1. 代码优先
  2. 实体框架
  3. C# Visual Studio 2012

我有一个用户帐户实体,该实体根据正则表达式验证密码

我可以使用某个事件在保存到数据库之前将密码转换为哈希值?

我的问题是,如果我先对密码进行哈希处理,那么我就无法使用此实体进行验证。

我考虑过将验证提取到不同的区域,并且仅将哈希值保存到实体。

电流

如下
  1. 用户输入新帐户详细信息
  2. 已创建用户帐户实体
  3. 使用数据注释验证的实体
  4. 密码哈希
  5. 保存到数据库的实体

有人可以帮我思考在哪里放置密码哈希吗

代码优先 - 验证密码并使用相同的实体进行哈希处理

如果您使用的是 MVC,我的方法将是这样的 -

将正则表达式放在帐户类的"密码"字段上。

在帐户控制器创建方法中:

  1. 检查模型状态是否有效 - 这将验证正则表达式和所有其他必填字段。
  2. 调用哈希方法,并将帐户对象上的现有纯文本密码替换为哈希密码
  3. 保存到数据库

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            user.Password = PasswordHasher.Hash(user.Password);
            db.Users.Add(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(user);
    }