【问题标题】:AWS Amplify/amplify-js forgotPassword() returns no error with invalid userNameAWS Amplify/amplify-js forgotPassword() 没有返回无效用户名的错误
【发布时间】:2021-03-09 04:47:05
【问题描述】:

我正在使用 aws-amplify (Vue/TypeScript) 实现身份验证组件。 使用 forgotPassword(userName: string),我正在尝试向目标电子邮件地址发送验证码。 https://aws-amplify.github.io/amplify-js/api/classes/authclass.html#forgotpassword

import { Auth } from 'aws-amplify'
...
await Auth.forgotPassword(emailAddress)

但是,对于不是 Cognito 用户之一的无效电子邮件地址,它会返回此成功消息。

{"CodeDeliveryDetails":{"AttributeName":"email","DeliveryMedium":"EMAIL","Destination":"****@d***.com"}}

我想要的是这个。

{"__type":"UserNotFoundException","message":"Username/client id combination not found."}

我怀疑 AWS Cognito 上的配置错误,但不知道要更改什么..

【问题讨论】:

    标签: aws-amplify aws-amplify-cli aws-amplify-sdk-js


    【解决方案1】:

    访问您的用户池

    转到左侧导航栏中的App Client

    然后向下滚动到安全配置

    请在“防止用户存在错误”下选择旧版

    注意:- 默认选项是启用(推荐)。这个默认选项是真正的根本原因。

    现在,当您输入 错误的用户名 [在我的情况下为 email-id] 时,它会抛出异常。

    如果您输入了正确的用户名 [在我的情况下为 email-id],那么它发送验证码

    【讨论】:

      【解决方案2】:

      您可以在应用客户端设置中将 Prevent User Existence Errors 设置为旧版。这样,如果用户池中不存在电子邮件,您将收到错误消息。

      【讨论】:

        【解决方案3】:

        AWS Cognito: Managing error responses

        当用户未找到、被禁用或没有恢复密码的机制时,Amazon Cognito 会返回 CodeDeliveryDetails 以及用户的模拟交付媒介。模拟的传递媒介由输入的用户名格式和用户池的验证设置决定。

        我需要检查 Cognito 配置。

        【讨论】:

        • 无法确定我可以在哪里控制密码重置权限。有吗?
        猜你喜欢
        • 2021-05-04
        • 2020-04-21
        • 2020-05-10
        • 2019-05-06
        • 2021-11-20
        • 1970-01-01
        • 2019-09-02
        • 2022-10-12
        • 2021-05-17
        相关资源
        最近更新 更多