0
  1. 代码优先
  2. 实体框架
  3. C# 视觉工作室 2012

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

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

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

我考虑过将验证提取到不同的区域,并且只将散列值保存到实体中。

目前的流程如下

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

有人可以帮我想想在哪里放置密码散列

4

1 回答 1

-1

如果您使用的是 MVC,我的方法将类似于 -

将正则表达式放在 Account 类的 Password 字段中。

在 AccountController Create 方法中:

  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);
    }
    
于 2013-10-21T21:56:59.207 回答