首页 > 解决方案 > AWS Cognito 使用用户名而不是电子邮件登录

问题描述

拥有一个通过电子邮件定义登录的用户池 在此处输入图像描述

在 node.js (后端)中,我正在调用:

const emailData = {
        Name: 'email',
        Value: request.body.email
    };
    const emailAttribute = new amazonCognitoIdentity.CognitoUserAttribute(emailData);
    userPool.signUp( request.body.email, request.body.psw, [emailAttribute], null, (error, data) => { ....

一切都很完美

这次我创建了一个新的用户池,用户名作为登录名,有问题: 在此处输入图像描述

  1. 我可以将多个用户名附加到同一封电子邮件(电子邮件属于父母的儿童应用程序,并且有一个用户用于父母,一个用户用于具有相同电子邮件的孩子)
  2. 如果对 1 的回答Yes是,每封电子邮件的用户数量是否有任何限制?(例如,应用程序中有 3 个孩子的父母 = 1 封电子邮件中有 4 个用户名)
  3. 找不到任何有关如何更改我的代码以使 cognito 使用用户名作为登录参数以及如何附加电子邮件的示例。

干杯

标签: node.jsamazon-web-servicesamazon-cognito

解决方案


  1. 是的,您可以拥有多个具有相同电子邮件地址的帐户。只有当您想使用它来登录时,电子邮件才必须是唯一的。

  2. 没有限制。如果您不使用电子邮件作为用户名,那么它将成为常规属性(就像任何其他属性一样)。

  3. 您需要指定USER_PASSWORD_AUTH用作身份验证流程,并且提供USERNAMEPASSWORD.

cognito.initiateAuth({
    ClientId: '...',
    AuthFlow: 'USER_PASSWORD_AUTH',
    AuthParameters: {
        USERNAME: 'my_test_user',
        PASSWORD: '...'
    }
}, function(err, data) {});

推荐阅读