エラーログを外部サービスに送信する
ルールでエラーオブジェクトを使用する
Errorオブジェクトのインスタンスを返すことでルール実行を完了するのと同じくらい簡単です。
return callback(new Error('some description'));
詳細については、クラス: nodejs.orgにエラーをお読みください。
または、Auth0固有のUnauthorizedErrorのインスタンスを返すこともできます。これにより、認証を開始したアプリケーション(つまり、/authorizeエンドポイントへのリダイレクトを開始したアプリケーション)に、指定されたエラーの説明を含む不正なエラー状態が返されます。これにより、アプリケーションは条件付き再試行機能を提供でき、特定の条件に基づいてアクセスを拒否するルールを実装できます。
return callback(new UnauthorizedError('some description'), user, context);
意味のあるエラーコードの説明を使用する
UnauthorizedErrorオブジェクトは、指定された説明のみを返します。不正なエラー条件に対して特定の処理を使用するには、説明をフォーマットして、簡単にアクセスできるエラーコード情報を含めることをお勧めします。例:
'[00043] - my specific error description')
例外処理
Promiseオブジェクト処理を使用するときにcatchハンドラーを使用する必要があります。Promiseオブジェクト処理は、非同期操作中のエラー処理にも効果的です。以下に示すように、Promiseオブジェクトを使用して、たとえば同期関数呼び出しをラップすると、Promiseチェーンなどを使用してカスケード エラー処理を簡単に実装できます。Promiseオブジェクトの詳細については、MDN Web DocsのPromiseを参照してください。Promiseチェーンの詳細については、Error Handling with Promises on javascript.infoのPromiseによるエラー処理をお読みください。
try...catch処理を使用することもできます。詳細については、MDN Web Docsのtry...catchをお読みください。このタイプの例外処理を設定するとパフォーマンスコストが発生する場合が多いため、多用しないようにして。ルールのパフォーマンスは可能な限り最適化する必要があります。より実用的なアプローチは、例外が発生した後に処理するのではなく、例外が発生しないようにする処理を実装することです。ベストプラクティスの詳細については、パフォーマンスのベストプラクティスを参照してください。
ルールで初期化されていないオブジェクトを避ける
user.user_metadata = user.user_metadata || {})
ルールでは、例外が発生しないようにするための手順を実行することがベストプラクティスであり、通常、例外処理を実装するよりもパフォーマンスとリソースの使用の点でコストが低くなります。