はじめに
皆さん。こんにちは!
DreamHanksのエルムです。
今回はサインアップ、サインイン、サインアウトの作成方法について説明していきます。
前回の記事はバックエンドの作成または既存のバックエンドの再利用です。
サインアップ (Sign-up)
Auth.signUpに新規ユーザーのメールアドレス、パスワード、その他の属性を渡して、Amazon Cognito UserPoolに新規ユーザーを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import { Auth } from 'aws-amplify'; async function signUp() { try { const { user } = await Auth.signUp({ username, password, attributes: { email, // オプショナル phone_number, // オプショナル // その他のカスタム属性 } }); console.log(user); } catch (error) { console.log('error signing up:', error); } } |
Auth.signUpプロミスは、CognitoUserを持つISignUpResultタイプのデータオブジェクトを返します。
CognitoUserは、認証されたユーザーのユニークな識別子であるuserSubを含みます; userSubがユーザー名と同じではありません。
1 2 3 4 5 |
{ user: CognitoUser; userConfirmed: boolean; userSub: string; } |
サインアップの確認 (Confirm sign up)
multi-factor authを有効にしている場合は、ユーザーから確認コードを取得した後にサインアップを確認します。
1 2 3 4 5 6 7 8 9 |
import { Auth } from 'aws-amplify'; async function confirmSignUp() { try { await Auth.confirmSignUp(username, code); } catch (error) { console.log('error confirming sign up', error); } } |
カスタム属性 (Custom Attributes)
サインアッププロセスでカスタム属性を作成するには、signUpメソッドのattributesフィールドにcustom を前置して追加します。
1 2 3 4 5 6 7 8 |
Auth.signUp({ username, password, attributes: { email, 'custom:DreamHanks': '******' } }) |
Amazon Cognitoは、サインアップ時にカスタム属性を動的に作成しません。カスタムアトリビュートを使用するには、まずユーザープールでアトリビュートを作成する必要があります。Amplify ClIを使ってカスタム属性を作成するためにUser Poolを開くには、amplify console auth を実行します。Amplify CLIを使用していない場合は、AWSコンソールにアクセスし、Amazon Cognitoダッシュボードを開くことで、ユーザープールを確認することができます。
サインイン (Sign-in)
ユーザー名とパスワードでサインインする場合は、Auth classのsignInメソッドにユーザー名とパスワードを渡します。
1 2 3 4 5 6 7 8 9 |
import { Auth } from 'aws-amplify'; async function signIn() { try { const user = await Auth.signIn(username, password); } catch (error) { console.log('error signing in', error); } } |
確認コードの再送 (Re-send confirmation code)
1 2 3 4 5 6 7 8 9 10 |
import { Auth } from 'aws-amplify'; async function resendConfirmationCode() { try { await Auth.resendSignUp(username); console.log('code resent successfully'); } catch (err) { console.log('error resending code: ', err); } } |
サインアウト(Sign-out)
1 2 3 4 5 6 7 8 9 |
import { Auth } from 'aws-amplify'; async function signOut() { try { await Auth.signOut(); } catch (error) { console.log('error signing out: ', error); } } |
Amazon Cognitoは、トークンの失効をサポートしており、Amplify(バージョン4.1.0以降)は、アプリケーションがオンラインの場合、Amazon Cognitoトークンを失効させます。これにより、Cognitoリフレッシュトークンは、新しいAccess TokenやId Tokenの生成に使用できなくなります。
Access TokensとId Tokensは短命です(デフォルトでは60分ですが、5分から1日まで設定できます)。失効後、これらのトークンはCognito User Poolsで使用できなくなります、 しかし、これらはAppSyncやAPI Gatewayなどの他のサービスと併用しても有効です。
トークンを無効にした後の他のサービスへの呼び出しを制限するには、Cognito User Poolsコンソールでアプリクライアントのトークン有効期限を下げることをお勧めします。Amplify CLIを使用している場合は、amplify console authを実行することでアクセスできます。
グローバルサインアウト (Global sign-out)
これにより、すべてのデバイスからユーザーをサインアウトすることができます。また、ユーザーに発行されたすべてのリフレッシュトークンが無効になります。ユーザーの現在のアクセストークンとIdトークンは、その有効期限が切れるまで有効です。アクセストークンとIDトークンは、発行から1時間後に失効します。
1 2 3 4 5 6 7 8 9 |
import { Auth } from 'aws-amplify'; async function signOut() { try { await Auth.signOut({ global: true }); } catch (error) { console.log('error signing out: ', error); } } |
終わりに
今回の記事は以上になります。
次回は[第6回] 既存のログインシステムとの併用 – Facebookログインを学びましょう。
ご覧いただきありがとうございます。
コメント