【问题标题】:Use Cognito Forgot password cannot receive any code with Email使用 Cognito 忘记密码无法通过电子邮件接收任何代码
【发布时间】:2021-02-24 20:39:13
【问题描述】:

我是第一次使用 AWS Cognito Auth。

  1. 创建了一个用户池(成功)
  2. 使用 AdminCreateUser API 在池中创建用户(成功)
  3. 尝试使用 AdminInitiateAuth API 和 AdminRespondToAuthChallenge API 获取访问令牌(成功)
  4. 尝试使用 ForgotPassword API 重置密码,但根本不起作用。

这是我在 JAVA 中的 ForgotPassword 代码:

ForgotPasswordRequest request = ForgotPasswordRequest.builder()
  .clientId(GetUserPoolClientId(companyCode))
  .username(userEmail)
  .build();
ForgotPasswordResponse response = cognitoClient.forgotPassword(request);

回复给我***@gmail.com,但我没有收到任何电子邮件。

【问题讨论】:

    标签: amazon-cognito


    【解决方案1】:

    我已经为此苦苦挣扎了几天,但终于找到了答案。似乎我们无法向未验证电子邮件的用户发送 forgotPassword 电子邮件,当您使用 AdminCreateUser API 时可能会发生这种情况,因为用户仅收到用于临时密码而非电子邮件验证的电子邮件。

    需要验证电话或电子邮件才能自动确认用户并启用忘记密码的恢复。

    https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html?icmpid=docs_cognito_console

    解决方案:

    当您调用 AdminCreateUser 方法时,您实际上可以将电子邮件验证标志作为另一个属性传递:

    {
      //AminCreateUser request ...
      "UserAttributes": [
        // other user attributes ...
        { 
         "Name": "email_verified",
         "Value": "true"
        }
      ],
    }
    

    还应该可以使用 AdminUpdateUserAttributes API 更新 email_verified 状态。

    【讨论】:

    • 请注意,如果设置email_verified 属性,您还需要设置email 属性。 docs.aws.amazon.com/cognito-user-identity-pools/latest/…
    • 我面临同样的问题,但我已经将用户标记为“email_verified”,如下所示。但不幸的是,如果用户有 UserStatus:'FORCE_CHANGE_PASSWORD',它仍然不起作用。 (即从未实际尝试过收到的临时密码,因为它最终出现在垃圾邮件中,然后在 7 天后过期)。还没找到解决办法...
    • @KristofferBerg-EcodeAS 你找到解决方案了吗?我也有同样的问题?
    猜你喜欢
    • 2017-11-12
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2021-02-28
    • 2016-08-31
    • 2016-07-25
    • 2011-02-19
    相关资源
    最近更新 更多