はじめに
JavaScript用のSDKでAmazon Cognitoのユーザープールを使い、パスワードを変更する方法を紹介します。
JavaScriptでユーザープールを使うには「amazon-cognito-identity-js」が必要です。「amazon-cognito-identity-js」はnpmコマンドでインストールすることができます。
<script src="node_modules/amazon-cognito-identity-js/dist/amazon-cognito-identity.min.js"></script>
※パスはあくまでも例です。環境に応じて変更してください。
スポンサーリンク
パスワード変更(changePassword)
未ログイン時にパスワードを変更する
「changePassword」でパスワードを変更することができます。ただし「changePassword」はログイン後に実行する必要があるため、一旦「authenticateUser」でログインした後に「changePassword」でパスワード変更をしています。
※未ログイン状態で「changePassword」を実行すると、エラーになる。
function changePassword() {
var username = "画面で入力されたユーザー名";
var oldPassword = "画面で入力された旧パスワード";
var newPassword1 = "画面で入力された新パスワード";
var newPassword2 = "画面で入力された確認用の新パスワード";
if (newPassword1 != newPassword2) {
alert("新パスワードが一致しません。");
return;
}
var poolData = {
UserPoolId : 'ユーザープールID',
ClientId : 'クライアントID'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
Username : username,
Pool : userPool
};
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
var authenticationData = {
Username : username,
Password : oldPassword,
};
// ログイン処理
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
// パスワード変更処理
cognitoUser.changePassword(oldPassword, newPassword1, function(err, result) {
if (err) {
alert('パスワード変更に失敗しました。');
} else {
alert("パスワードを変更しました。");
// パスワード変更時の処理を書く...
}
})
},
onFailure: function(err) {
alert('パスワードが正しくありません。');
},
});
}ログイン後にパスワードを変更する
ログイン後にパスワード変更する場合は、「getCurrentUser」で使用中のCognitoUserが取得できます。
使用中のCognitoUserを使い「getSession」でトークン情報の確認(再取得)をした後に「changePassword」でパスワードを変更をしています。
function changePassword2() {
var username = "画面で入力されたユーザー名";
var oldPassword = "画面で入力された旧パスワード";
var newPassword1 = "画面で入力された新パスワード";
var newPassword2 = "画面で入力された確認用の新パスワード";
if (newPassword1 != newPassword2) {
alert("新パスワードが一致しません。");
return;
}
var poolData = {
UserPoolId : 'ユーザープールID',
ClientId : 'クライアントID'
};
var userPool = AmazonCognitoIdentity.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser) {
cognitoUser.getSession(function (err, session) {
if (session.isValid()) {
// パスワード変更処理
cognitoUser.changePassword(oldPassword, newPassword1, function(err, result) {
if (err) {
alert('パスワード変更に失敗しました。');
} else {
alert("パスワードを変更しました。");
// パスワード変更時の処理を書く...
}
})
} else {
// トークン情報の再取得に失敗...
}
}
} else {
// ログイン情報がない...
}
}終わりに
本記事では、JavaScript用のSDKでAmazon Cognitoのユーザープールを使い、パスワードを変更する方法を紹介しました。
[AWS 関連記事]
- Amazon Cognito ユーザープールの使い方
- Amazon Cognito IDプールの使い方
- Amazon S3へファイルをアップロードする方法
- Amazon S3からファイルをダウンロードする方法
- 【Amazon Cognito】JavaScriptでログイン処理を実装する方法
- 【Amazon Cognito】getSessionでトークン情報を再取得する方法
helpful
この記事は役に立ちましたか?
