当前位置: 首页 > 知识库问答 >
问题:

电子邮件重置密码无效,但帐户确认有效。NetCore公司

诸葛茂勋
2023-03-14

所以我遵循了这里的说明:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-3.1

我的应用程序工作,并使用我设置的电子邮件服务发送帐户确认电子邮件。

但是,如果我去重置密码,身份服务不会调用电子邮件服务来发送电子邮件指示。我做错了什么?

身份服务如何知道如何使用电子邮件确认帐户但不能使用它来重置密码?

用于上下文

 startup.cs


 // requires
 services.AddTransient<IEmailSender, EmailSender>();
 services.Configure<AuthMessageSenderOptions>(Configuration);


 EmailSender.cs

public class EmailSender:IEmailSender
{
    public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
    {
        Options = optionsAccessor.Value;
    }

    public AuthMessageSenderOptions Options { get; } //set only via Secret Manager

    public Task SendEmailAsync(string email, string subject, string message)
    {
        return Execute(Options.SendGridKey, subject, message, email);
    }

    public Task Execute(string apiKey, string subject, string message, string email)
    {
        var client = new SendGridClient(apiKey);
        var msg = new SendGridMessage()
        {
            From = new EmailAddress("stackoverflow@blah.com", Options.SendGridUser),
            Subject = subject,
            PlainTextContent = message,
            HtmlContent = message
        };
        msg.AddTo(new EmailAddress(email));

        // Disable click tracking.
        // See https://sendgrid.com/docs/User_Guide/Settings/tracking.html
        msg.SetClickTracking(false, false);

        return client.SendEmailAsync(msg);
    }
}

共有1个答案

伊光赫
2023-03-14

我们遇到了同样的问题,发现在发送注册电子邮件时,没有发送密码重置电子邮件。在我们的案例中,这是因为AspNetUser表存在两个问题:

  1. 我们没有完成电子邮件确认步骤,该步骤将数据库中的电子邮件确认bool设置为True,并且

一旦我们填充了丢失的电子邮件字段,并运行了确认步骤-或手动将标志更改为True-密码重置电子邮件开始工作。

 类似资料:
  • 我正在ASP中使用数据注释。NET MVC4项目对电子邮件和电话字段执行客户端验证。电子邮件正在客户端中成功验证,但手机没有-它允许我输入无效字符,并且只在提交表单时警告我(而不是在键入字符后立即警告我) 在模型中: 在视图中,我相信我包含了正确的脚本引用: ...并使用html助手(我使用TextBoxFor而不是EditorFor,因为我正在应用类属性,为了清楚起见,我在这里省略了这些属性)

  • 我们刚刚启动了我们的ASP。NETMVC(使用Identity 2.0)web应用程序6天前已经有超过5000人注册了帐户,太棒了! 问题是3-5%点击确认电子邮件链接的用户(似乎也是重置密码)会出现错误屏幕,大概是因为他们有一个无效的令牌。 我在StackOverflow上读到,您需要对url进行编码,以避免特殊字符将其丢弃,然后在验证之前对其进行解码。不过,我这样做没有效果,一些用户仍然在他们

  • 我做了一个AWS Cognito用户池,没有电子邮件或电话属性(只有用户名和密码),MFA关闭了。然而,当新用户注册时,他们无法登录,直到他们的帐户得到确认。当然,这是不可能的,因为没有电子邮件或电话发送校验码。 我如何不需要用户确认,或者在注册时自动确认用户? 下面是Cognito用户池中相关选项卡的一些屏幕截图:

  • 您可以通过此界面创建和管理域的电子邮件帐户。 您可以创建电子邮件地址,配置邮件客户端,更改密码以及直接访问您的Webmail。 创建电子邮件地址 要为您的域创建电子邮件地址,请按以下步骤操作 - Step 1 - 单击cPanel主页的“电子邮件”部分中的“ Email Accounts链接。 Step 2 - 在电子邮件帐户中,您会在顶部找到添加电子邮件帐户。 Step 3 - 添加您要创建的电

  • 我看过这篇文章了https://ahrjarrett.com/posts/2019-02-08-resetting-user-passwords-with-node-and-jwt了解如何在express中重置密码。 这给了我一个意外标记{的错误 从".../utils/mailer"导入{transaver, getPasswordResetURL, resetPasswordTemboard}