代码优先 - 验证密码并使用相同的实体进行哈希处理
本文关键字:实体 处理 哈希 验证 密码 代码 | 更新日期: 2023-09-27 18:36:08
- 代码优先
- 实体框架
- C# Visual Studio 2012
我有一个用户帐户实体,该实体根据正则表达式验证密码
我可以使用某个事件在保存到数据库之前将密码转换为哈希值?
我的问题是,如果我先对密码进行哈希处理,那么我就无法使用此实体进行验证。
我考虑过将验证提取到不同的区域,并且仅将哈希值保存到实体。
电流
如下- 用户输入新帐户详细信息
- 已创建用户帐户实体
- 使用数据注释验证的实体
- 密码哈希
- 保存到数据库的实体
有人可以帮我思考在哪里放置密码哈希吗
如果您使用的是 MVC,我的方法将是这样的 -
将正则表达式放在帐户类的"密码"字段上。
在帐户控制器创建方法中:
- 检查模型状态是否有效 - 这将验证正则表达式和所有其他必填字段。
- 调用哈希方法,并将帐户对象上的现有纯文本密码替换为哈希密码
-
保存到数据库
[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); }