vNext AspNet.Identity自定义密码验证

时间:2015-09-17 20:17:04

标签: asp.net-mvc asp.net-identity asp.net-core-mvc

如何添加自定义密码验证?我可以通过视图进行一些操作,但我宁愿在控制器和/或模型中添加一些自定义验证器,以便不允许使用最后5个密码。任何指针都会非常感激!

1 个答案:

答案 0 :(得分:0)

第一步,您必须在用户密码更改时保留用户密码的历史记录。

由于密码是经过哈希处理的,因此您必须先使用IPasswordHasher对提供的新密码进行哈希处理,然后再将其与以前的密码哈希值进行比较。

如果您使用带有标识的标准项目模板和提供的ManageController,您可以在构造函数中添加IPasswordHasher的依赖项,然后您可以在控制器的ChangePassword方法中添加逻辑或实现具有逻辑的帮助程序类对新密码进行哈希处理并确定它是否存在于存储的先前哈希密码中。

然后,如果您确定用户正在尝试重新使用之前的密码,则可以向模型状态添加错误:

ModelState.AddModelError(string.Empty, "You cannot re-use previous passwords");
return View(model);

这将为您提供服务器端验证。