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