【问题标题】:How do I fix the AWS Wild Rydes sample error: InvalidParameterException: "username should be an email"如何修复 AWS Wild Rydes 示例错误:InvalidParameterException:\"username should be an email\"
【发布时间】:2023-02-13 09:29:48
【问题描述】:

跟随 AWS WildRydes 示例到 Build a Serverless Web Application,在设置 Cognito 用户池后,任何在示例网站上注册用户的尝试都会生成错误:

 InvalidParameterException: Username should be an email

我使用的用户名是有效的电子邮件(我的真实电子邮件地址)。错误正在从 Cognito 服务返回。谷歌没有发现任何明显的东西。我仔细观察了样本。

【问题讨论】:

    标签: amazon-web-services amazon-cognito sample


    【解决方案1】:

    很明显,Cognito 正在尝试验证传递的用户名并发现它不是有效的电子邮件地址,尽管我提供了有效的电子邮件。 Cognito 不太可能出现错误,因此我深入研究了 AWS 提供的示例代码。在 js/cognito-auth.js 文件中,我发现在将用户名参数传递给 Cognito 的地方,它被包装在 toUsername() 函数中:

    userPool.signUp(toUsername(email), password, [attributeEmail], null,
    

    该函数将电子邮件中的 @ 替换为 -at-:

    function toUsername(email) {
        return email.replace('@', '-at-');
    }
    

    我采用了快捷方式并更新了 toUsername() 函数:

    function toUsername(email) {
        return email;
    }
    

    在将更改推送到 CodeCommit 并等待 Amplify 部署它之后,我的注册和登录工作正常。我更改的示例代码直接来自 AWS,所以我不确定这是怎么发生的,可能是:

    1. 我在用户池设置上犯了一个错误,尽管我非常小心并且都是默认设置
    2. 用户池的默认设置发生了一些变化
    3. Cognito 添加了强制用户名是电子邮件的验证。

      无论如何,我发布这个是为了帮助其他人体验它。

    【讨论】:

      【解决方案2】:

      不能投票,但我花了太多时间试图在没有堆栈溢出的情况下解决它。所以非常感谢你结束了我的痛苦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-07
        • 2018-12-19
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 2021-07-12
        相关资源
        最近更新 更多