パスワード変更とリカバリーの設定
Amplify Authは、ユーザーがパスワードを変更したり、忘れたパスワードを復旧したりするための安全な方法を提供します。これにより、ユーザーの手間を安全に軽減し、アプリケーションへのアクセス体験を向上させます。
始める前に、以下が必要です:
- Authカテゴリーが設定されたAmplifyプロジェクト
- インストールして設定されたAmplifyライブラリ
ユーザーが忘れたパスワードを置き換えられるようにする
ユーザーは自分のアカウントへのアクセスを取り戻し、忘れたパスワードを置き換えたいと考えるかもしれません。ユーザーはセルフサービスでアカウント所有権を検証した後にパスワードをリセットするか、管理者にアカウントのパスワードをリセットするよう要求することができます。
セルフサービスを通じて新しいパスワードに変更する
forgotPasswordメソッドを使用することで、セルフサービスを有効にすることができます。これはユーザーのメールアドレスまたは電話番号に確認コードを送信します(Cognito ユーザープールで検証されている属性により異なります)。その後、forgotPasswordSubmitメソッドを使用して、その確認コードと新しいパスワードを入力することができます。これにより、ユーザーはパスワードをリセットし、新しいパスワードでサインインすることができます。
import { Auth } from 'aws-amplify';
// Send confirmation code to user's email or phone numberasync function forgotPassword(username: string) { try { const data = await Auth.forgotPassword(username); console.log(data); } catch (err) { console.log(err); }}
// Collect confirmation code and new passwordasync function forgotPasswordSubmit( username: string, code: string, newPassword: string) { try { const data = await Auth.forgotPasswordSubmit(username, code, newPassword); console.log(data); } catch (err) { console.log(err); }}import { Auth } from 'aws-amplify';
// Send confirmation code to user's emailasync function forgotPassword(username) { try { const data = await Auth.forgotPassword(username); console.log(data); } catch (err) { console.log(err); }}
// Collect confirmation code and new passwordasync function forgotPasswordSubmit(username, code, newPassword) { try { const data = await Auth.forgotPasswordSubmit(username, code, newPassword); console.log(data); } catch (err) { console.log(err); }}管理者リセット後に新しいパスワードに変更する
ユーザーのアカウントパスワードを管理者がリセットする必要がある場合、確認コードはリセットがトリガーされるとすぐにユーザーのメールアドレスまたは電話番号に送信されます(Cognito ユーザープールで検証されている属性により異なります)。その後、forgotPasswordSubmitメソッドを使用して、その確認コードと新しいパスワードを入力することができます。これにより、ユーザーはパスワードをリセットし、新しいパスワードでサインインすることができます。
import { Auth } from 'aws-amplify';
async function forgotPasswordSubmit( username: string, code: string, newPassword: string) { try { const data = await Auth.forgotPasswordSubmit(username, code, newPassword); console.log(data); } catch (err) { console.log(err); }}import { Auth } from 'aws-amplify';
async function forgotPasswordSubmit(username, code, newPassword) { try { const data = await Auth.forgotPasswordSubmit(username, code, newPassword); console.log(data); } catch (err) { console.log(err); }}ユーザーはこれでアカウントを復旧し、新しいパスワードにリセットできます。
ユーザーがパスワードを変更できるようにする
他の場合には、ユーザーが時間をかけてパスワードを変更できるようにしたいかもしれません。Amplify Librariesを使用してこれを設定できます。
アカウントにサインイン中にパスワードを変更する
changePasswordメソッドを使用することで、ユーザーがパスワードを変更できるようにすることができます。これはユーザーに現在のパスワードoldPasswordと新しいパスワードnewPasswordを入力するよう促します。成功した場合、パスワードが更新されます。
import { Auth } from 'aws-amplify';
async function changePassword(oldPassword: string, newPassword: string) { try { const user = await Auth.currentAuthenticatedUser(); const data = await Auth.changePassword(user, oldPassword, newPassword); console.log(data); } catch (err) { console.log(err); }}import { Auth } from 'aws-amplify';
async function changePassword(oldPassword, newPassword) { try { const user = await Auth.currentAuthenticatedUser(); const data = await Auth.changePassword(user, oldPassword, newPassword); console.log(data); } catch (err) { console.log(err); }}これで、ユーザーはパスワードを変更できるようになります。
トラブルシューティング検証エラーのトラブルシューティング
ユーザーが設定した要件を満たさない無効なパスワードを入力した場合、フォーム検証エラーが発生する可能性があります。たとえば、最小文字数が8文字である場合、ユーザーが8文字未満を入力するとエラーメッセージを表示する必要があります。
また、APIコールをtryブロックとcatchブロックでラップして、エラーをキャッチする必要があります。その後、ユーザーフレンドリーなエラーメッセージをUIに表示して、ユーザーが何が起こったかわかるようにすることができます。これにより、ユーザー体験でサイレント失敗がないようにすることができます。
おわりに
おめでとうございます。ユーザーパスワードの変更とリカバリーの設定ガイドを完了しました。このガイドでは、ユーザーがパスワードを変更できるようにする方法と、登録されたメールアドレスまたは電話番号を使用してアカウントを復旧し、パスワードを置き換えるのを支援する方法を学びました。
次のステップ
パスワード管理を有効にしたので、さらに機能を追加することも検討できます。以下について詳しく学ぶことをお勧めします: