在AWS Cogito用户池中,有两种方法可以让用户登录。其中之一是
用户名-用户可以使用用户名以及其他可选方式来注册和登录。
还允许使用经过验证的电子邮件地址登录
我选择了上面的内容,并且在使用aws-amplify测试它时,如果我尝试使用电子邮件登录,我总是得到books = Book.objects.filter(owner_id=request.user.owner_id)
,但是当我尝试使用用户名登录时,它仍然可以正常工作。
这是我的登录方法
__type: "NotAuthorizedException"
message: "Incorrect username or password."
};
答案 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登录