はじめに
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
この記事は役に立ちましたか?