AWS-Cognito:如何使用电子邮件或用户名登录用户

时间:2020-04-12 22:33:03

标签: amazon-web-services amazon-cognito aws-amplify

在AWS Cogito用户池中,有两种方法可以让用户登录。其中之一是

用户名-用户可以使用用户名以及其他可选方式来注册和登录。

还允许使用经过验证的电子邮件地址登录

我选择了上面的内容,并且在使用aws-amplify测试它时,如果我尝试使用电子邮件登录,我总是得到books = Book.objects.filter(owner_id=request.user.owner_id) ,但是当我尝试使用用户名登录时,它仍然可以正常工作。

这是我的登录方法

__type: "NotAuthorizedException"
message: "Incorrect username or password."

};

3 个答案:

答案 0 :(得分:0)

我的vuex商店登录操作: 您可能需要将属性名称设置为username

async login({ commit },{ email, password }) {
    const user =  await Auth.signIn({ username: email, password });
    commit('set', user)
    return user;
  },

答案 1 :(得分:0)

我知道这是一个旧线程,但我最近遇到了这个问题,必须弄清楚。当您的用户池中有一个用户未将 email_verified 设置为 True 时,Auth.signIn 方法将仅适用于该用户的用户名。

不仅如此,Auth.forgotPassword 方法不会将代码发送到用户的电子邮件。可能还有更多这样的互动。

确保确认用户的电子邮件,仅此而已!

如果您使用后端来创建您的用户,您可以简单地通过以下方式执行此操作:

const signUpParams = {
  UserPoolId: "YOUR_USER_POOL_ID",
  TemporaryPassword: "TEMP_PW",
  Username: "username",
  UserAttributes: [
    {
      Name: 'email',
      Value: "USER_EMAIL",
    },
    {
      Name: 'email_verified',
      Value: 'True',
    },
  ],
};

const { User } = await cognitoService.adminCreateUser(signUpParams).promise();

答案 2 :(得分:-1)

aws cognito是区分大小写的示例,如果您使用Siyavash@email.com注册了电子邮件,则无法使用siyavash@email.com登录