Cogitoを使った認証でユーザが登録後に、メアドを変更する際に
入力ミスで違うメアド入れちゃったけど、アプリからはログアウトしちゃった
という状況はどうなるのか?
javascriptでテストしてみる。
まずユーザを登録する。
var attributeList = [];
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
Name: 'name',
Value: $('#name').val()
}));
attributeList.push(new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute({
Name: 'email',
Value: $('#email').val()
}));
userPool.signUp($('#email').val(), $('#password').val(), attributeList, null, function(err, result) {
if (err) {
console.log(err);
return;
}
cognitoUser = result.user;
console.log('Username:' + cognitoUser.getUsername());
});
登録後、認証コードが送られてくるので、認証コードを登録してメールアドレスを認証済みにする。
Cognitoで見ると、メールアドレスは認証済みになっているので
そのユーザでログインして、メールアドレスの変更を行う。
認証コードが新しいメールアドレスに送信されるが
それを認証せずに、古い情報でログインしようとすると
認証エラーが発生してログインできない。
Cognito上ではメアドは変更されていて、認証済みが取り消されている。
これに対応するにはdynamoで管理するか、cognitoに追加の属性を持たせて、認証や変更トリガーでmail属性を認証後にアップデートするようにしました。