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属性を認証後にアップデートするようにしました。