Looking for how to use this in your app?See Frontend Libraries →
パスワードを管理する
Amplify Authは、ユーザーがパスワードを変更したり、忘れたパスワードを回復したりするための安全な方法を提供します。
パスワードのデフォルト設定を理解する
デフォルトでは、ユーザーは電話またはメールを使用してパスワードを忘れた場合にアカウントへのアクセスを回復できます。次の表は、ログインオプションとしてphoneまたはemailが使用されている場合に使用されるデフォルトアカウント回復方法です。
| ログインオプション | ユーザーアカウント検証チャネル |
|---|---|
phone | 電話番号 |
email | メール |
email と phone | メール |
パスワードをリセットする
ユーザーのパスワードをリセットするには、resetPassword APIを使用します。これにより、ユーザーの設定に基づいて宛先(メールやSMSなど)にリセットコードが送信されます。
Future<void> resetPassword(String username) async { try { final result = await Amplify.Auth.resetPassword( username: username, ); await _handleResetPasswordResult(result); } on AuthException catch (e) { safePrint('Error resetting password: ${e.message}'); }}Future<void> _handleResetPasswordResult(ResetPasswordResult result) async { switch (result.nextStep.updateStep) { case AuthResetPasswordStep.confirmResetPasswordWithCode: final codeDeliveryDetails = result.nextStep.codeDeliveryDetails!; _handleCodeDelivery(codeDeliveryDetails); break; case AuthResetPasswordStep.done: safePrint('Successfully reset password'); break; }}パスワードリセットプロセスを完了するには、ユーザーが受け取ったコードと設定したい新しいパスワードを使用してconfirmResetPassword APIを呼び出します。
Future<void> confirmResetPassword({ required String username, required String newPassword, required String confirmationCode,}) async { try { final result = await Amplify.Auth.confirmResetPassword( username: username, newPassword: newPassword, confirmationCode: confirmationCode, ); safePrint('Password reset complete: ${result.isPasswordReset}'); } on AuthException catch (e) { safePrint('Error resetting password: ${e.message}'); }}パスワードを更新する
updatePassword APIを使用して、サインインしたユーザーのパスワードを更新できます。
Future<void> updatePassword({ required String oldPassword, required String newPassword,}) async { try { await Amplify.Auth.updatePassword( oldPassword: oldPassword, newPassword: newPassword, ); } on AuthException catch (e) { safePrint('Error updating password: ${e.message}'); }}デフォルトユーザーアカウント検証チャネルをオーバーライドする
認証リソースで使用されるチャネルを変更するには、常に次の設定をオーバーライドできます。
amplify/auth/resource.ts
import { defineAuth } from '@aws-amplify/backend';
export const auth = defineAuth({ loginWith: { email: true }, accountRecovery: 'EMAIL_ONLY'});デフォルトパスワードポリシーをオーバーライドする
デフォルトでは、パスワードポリシーは以下に設定されています:
MinLength: 8文字requireLowercase: truerequireUppercase: truerequireNumbers: truerequireSymbols: truetempPasswordValidity: 3日
基本となるcfnUserPoolリソースを変更することで、認証リソースで受け入れられるパスワード形式をカスタマイズできます:
amplify/backend.ts
import { defineBackend } from '@aws-amplify/backend';import { auth } from './auth/resource';
const backend = defineBackend({ auth,});// extract L1 CfnUserPool resourcesconst { cfnUserPool } = backend.auth.resources.cfnResources;// modify cfnUserPool policies directlycfnUserPool.policies = { passwordPolicy: { minimumLength: 32, requireLowercase: true, requireNumbers: true, requireSymbols: true, requireUppercase: true, temporaryPasswordValidityDays: 20, },};