【发布时间】:2015-09-17 20:17:04
【问题描述】:
如何添加自定义密码验证?我可以通过视图做一些事情,但我宁愿向控制器和/或模型添加一些自定义验证器,以不允许使用最后 5 个密码。任何指针将不胜感激!
【问题讨论】:
标签: asp.net-mvc asp.net-identity asp.net-core-mvc
如何添加自定义密码验证?我可以通过视图做一些事情,但我宁愿向控制器和/或模型添加一些自定义验证器,以不允许使用最后 5 个密码。任何指针将不胜感激!
【问题讨论】:
标签: asp.net-mvc asp.net-identity asp.net-core-mvc
第一步,您必须在用户更改密码时保留用户密码的历史记录。
由于密码经过哈希处理,您必须使用 IPasswordHasher 对提供的新密码进行哈希处理,然后才能将其与之前的密码哈希值进行比较。
如果您使用具有标识和提供的 ManageController 的标准项目模板,您可以在构造函数中添加 IPasswordHasher 的依赖项,然后您可以在控制器的 ChangePassword 方法中添加逻辑或实现具有逻辑的辅助类对新密码进行哈希处理,并确定它是否存在于存储的以前的哈希密码中。
然后,如果您确定用户正在尝试重新使用以前的密码之一,您可以将错误添加到模型状态:
ModelState.AddModelError(string.Empty, "You cannot re-use previous passwords");
return View(model);
这将为您提供服务器端验证。
【讨论】: