【问题标题】:.Net Core Forgot password not found.Net Core 忘记密码未找到
【发布时间】:2021-09-08 05:43:40
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-core asp.net-identity


    【解决方案1】:

    我不知道忘记密码的页面在哪里,和其他页面没有关系

    您需要在 ASP.NET Core 项目中使用 Scaffold Identity。

    1. 这意味着您需要通过 Scaffold Identity 添加所需的页面:ForgotPassword、ForgotPasswordConfirmation、ResetPassword、ResetPasswordConfirmation
    2. Scaffold Identity in ASP.NET Core projects

    我不知道电子邮件服务是如何被调用的,但我可以设置一个断点并查看它是否被正确的数据击中。

    此功能是否由核心身份管理?

    IEmailSender 位于 ASP.NET Core Identity.UI 包中,默认实现 注入到 不支持的 DI 中什么都不做

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

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

    2. 在您提供的链接中,已经详细说明如何实现 IEmailSender

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2012-12-20
      • 2013-05-17
      • 2011-08-26
      • 2015-12-31
      相关资源
      最近更新 更多