.Net Core 忘记密码未找到

.Net Core Forgot password not found

我正在学习 .Net core Account and password recovery 的教程,但我不确定它是如何工作的。教程说在 startup.cs 中添加电子邮件服务,然后一切就开始工作了。我不知道忘记密码页面在哪里,它与其他页面无关,我检查了隐藏文件和它自己的实际目录(见图),但我从重置密码 link 被重定向到那里。我不知道电子邮件服务是如何被调用的,但我可以设置一个断点并查看它是否被正确的数据击中。我可以看到用于获取用户信息的 sql 查询。此功能是否由核心身份管理?

I have no idea where the forgot password page is located, it not with the other pages

您的 ASP.NET 核心项目中需要 Scaffold Identity。

  1. 也就是说你需要通过Scaffold Identity添加你需要的页面:ForgotPassword, ForgotPasswordConfirmation, ResetPassword, ResetPasswordConfirmation.
  2. Scaffold Identity in ASP.NET Core projects

I have no idea how the email service is being called yet I can set a break point and see that it is being hit with the correct data.

Is this functionality managed by core identity?

IEmailSender在包ASP.NET核心Identity.UI,带默认在 DI 中注入的实现 不执行任何操作

我会在下面详细说明如何发邮件重置密码。重置密码的过程可以先到最后阅读

  1. 换句话说,您需要实现IEmailSender

  2. 在你给的link中,已经详细给出了如何实现IEmailSender .

  3. 在示例中,使用了 SendGrid 电子邮件提供商。您还可以选择其他电子邮件提供商。

    1. 您需要先注册一个SendGrid账号,然后创建一个API Key,将您的SendGrid信息存放在appsettings.json中。
      • 您可以创建一个 API 密钥,如下所示。
    2. appsettings.json:
      1. 发送网格用户:
        • 这是您在 SendGird 注册的帐号。比如我用邮箱xxx.test.com注册的,SendGridUser是xxx.test.com.
      2. 发送网格键:
        • 这就是上面提到的API键。
      {
        ... ...
        "AllowedHosts": "*",
        "SendGridUser": "xxxx",
        "SendGridKey": "xxxxx"
      }
      
  4. 重置密码的过程可以简单概括如下:

    1. 单击link重设密码后请求忘记密码页面
    2. 输入您的电子邮件地址以重置密码
    3. 如果您需要重设密码的邮箱地址存在且已被确认,则ForgotPassword中的方法OnPostAsync会发送一个发送到您的电子邮件地址。
      • 如果在执行classIEmailSenderExecute方法中设置断点,可以看到发送电子邮件的结果。
    4. 您可以打开您的邮箱查看link重置您收到的密码,然后输入重置密码并提交表单。
    5. 表单提交成功后,会请求ResetPassword的OnPostAsync方法,处理会重定向到ResetPasswordConfirmation页面.
  5. 结果