AccountController.SendCode 和 VerifyCode 的作用是什么?

What are the actions AccountController.SendCode and VerifyCode there for?

此问题与您在 Visual Studio Community 2015 RC 中打开 ASP.NET MVC 应用程序时获得的 Visual Studio 生成代码有关。

在此生成的代码中,AccountController 上的操作 SendCodeVerifyCode 的目的是什么?

我已经阅读了他们的代码,但是阅读这段代码并从 MSDN 中查找其中调用的函数的含义需要投入时间——所有这些我都做过——然后打开他们的观点看看他们做了什么,然后寻找他们被调用的地方的参考——这对好处来说太过分了。 Microsoft 在其他地方在此生成的代码中留下了很多注释。他们本可以留下一些评论来解释这些操作的工作流程,并告诉我们它们应该(和当前)从哪里调用。

造成混淆的一个重要原因是:不会从其他任何地方调用或重定向这些操作。

无论如何,我的理解是他们在那里要求刚刚使用他的电子邮件地址在网站上注册的访问者通过请求向他发送代码来验证他的电子邮件地址。

但是在 SendCode 操作的源代码中,代码中有这个下拉列表,用于获取视图中已注册的双因素身份验证提供程序(我只是通过阅读代码看到的) . 我无法 运行 这个动作,因为它不是从任何地方调用的,我不知道如何用正确的参数来实现它。

这让我怀疑这与通过电子邮件进行双因素身份验证有关 and/or phone。

但是 phone 的双因素身份验证已经包含在 ManageController.AddPhone 操作和 ManagerController.EnableTwoFactorAuthentication 中,对吗?

似乎需要一位老牧师和一位年轻牧师才能理解生成的代码中的内容。

有人可以告诉我这两个动作是做什么用的,它们(应该)从哪里调用?这两个操作的整个工作流程是什么?

如果您希望实施注册验证逻辑,我相信这些方法已经准备就绪。例如,用户注册到您的网站,您要求他们在批准注册之前验证其信息(通常是电子邮件地址)。

所以流程是:

  1. 用户注册
  2. 系统创建用户但尚未激活帐户
  3. 系统向用户邮箱发送验证邮件link (AccountController.SendCode())
  4. 用户打开电子邮件
  5. 用户点击验证 link 导航到您网站上的验证页面
  6. 页面验证用户信息(AccountController.CheckCode())
  7. 如果验证成功,账户被激活
  8. 如果验证不成功,将显示错误消息

我不确定您是否已经看过 this post,但它概述了如何使用 SendGrid 作为您的电子邮件提供商来实现类似的功能。

sendcode 和 verifycode 的目的是为了防止您想要利用 MFA(多因素身份验证)。因此,登录后,您将被重定向到发送代码,您可以在其中决定是通过手机还是电子邮件发送代码,一旦发送代码,您就可以验证代码以输入您请求的代码以完成该过程。