【问题标题】:vNext AspNet.Identity custom password validationvNext AspNet.Identity 自定义密码验证
【发布时间】:2015-09-17 20:17:04
【问题描述】:

如何添加自定义密码验证?我可以通过视图做一些事情,但我宁愿向控制器和/或模型添加一些自定义验证器,以不允许使用最后 5 个密码。任何指针将不胜感激!

【问题讨论】:

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


    【解决方案1】:

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

    由于密码经过哈希处理,您必须使用 IPasswordHasher 对提供的新密码进行哈希处理,然后才能将其与之前的密码哈希值进行比较。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2019-07-04
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多