vNext AspNet.Identity 自定义密码验证
vNext AspNet.Identity custom password validation
如何添加自定义密码验证?我可以通过视图做一些事情,但我宁愿向控制器 and/or 模型添加一些自定义验证器,以不允许使用最后 5 个密码。任何指针将不胜感激!
第一步,无论何时更改用户密码,您都必须保留用户密码的历史记录。
由于密码经过哈希处理,您必须先使用 IPasswordHasher 对提供的新密码进行哈希处理,然后才能将其与以前的密码哈希进行比较。
如果您使用带有标识和提供的 ManageController 的标准项目模板,您可以在构造函数中为 IPasswordHasher 添加一个依赖项,然后您可以在控制器的 ChangePassword 方法中添加逻辑或实现一个帮助程序 class 具有散列新密码并确定它是否存在于存储的先前散列密码中的逻辑。
然后,如果您确定用户正在尝试重复使用以前的密码之一,您可以向模型状态添加错误:
ModelState.AddModelError(string.Empty, "You cannot re-use previous passwords");
return View(model);
这将为您提供服务器端验证。
如何添加自定义密码验证?我可以通过视图做一些事情,但我宁愿向控制器 and/or 模型添加一些自定义验证器,以不允许使用最后 5 个密码。任何指针将不胜感激!
第一步,无论何时更改用户密码,您都必须保留用户密码的历史记录。
由于密码经过哈希处理,您必须先使用 IPasswordHasher 对提供的新密码进行哈希处理,然后才能将其与以前的密码哈希进行比较。
如果您使用带有标识和提供的 ManageController 的标准项目模板,您可以在构造函数中为 IPasswordHasher 添加一个依赖项,然后您可以在控制器的 ChangePassword 方法中添加逻辑或实现一个帮助程序 class 具有散列新密码并确定它是否存在于存储的先前散列密码中的逻辑。
然后,如果您确定用户正在尝试重复使用以前的密码之一,您可以向模型状态添加错误:
ModelState.AddModelError(string.Empty, "You cannot re-use previous passwords");
return View(model);
这将为您提供服务器端验证。