Envoyer les journaux d’erreurs à un service externe
Utiliser des objets d’erreur dans les Rules
Error, comme dans l’exemple suivant :
return callback(new Error('some description'));
Pour en savoir plus, consultez Class: Error on nodejs.org.
Autrement, vous pouvez renvoyer une instance de UnauthorizedError propre à Auth0, ce qui entraîne le renvoi d’une erreur unauthorized accompagnée de la description fournie à l’application qui a lancé l’authentification, c’est-à-dire l’application à partir de laquelle la redirection vers le point de terminaison /authorize a été lancée. Cela permet à une application d’offrir une possibilité de nouvelle tentative conditionnelle et vous permet d’implémenter des Rules pour refuser l’accès selon certaines conditions :
return callback(new UnauthorizedError('some description'), user, context);
Utilisez des descriptions de code d’erreur explicites
UnauthorizedError renvoie uniquement la description fournie. Pour traiter spécifiquement les erreurs d’autorisation, nous vous recommandons de formater vos descriptions de manière à y inclure un code d’erreur facilement repérable, par exemple :
'[00043] - my specific error description')
Gestion des exceptions
catch lorsque vous traitez des objets Promise. Le traitement des objets Promise peut aussi être utile pour gérer les erreurs lors d’opérations non asynchrones. Comme illustré ci-dessous, un objet Promise peut servir à encapsuler, par exemple, l’appel d’une fonction synchrone, ce qui facilite la mise en place d’une gestion des erreurs en cascade au moyen de l’enchaînement de promesses et de techniques similaires. Pour en savoir plus sur l’objet Promise, consultez Promise dans MDN Web Docs. Pour en savoir plus sur l’enchaînement de promesses, consultez Error Handling with Promises sur javascript.info.
try...catch pour gérer les exceptions JavaScript qui surviennent pendant une opération synchrone. Pour en savoir plus, consultez try...catch dans MDN Web Docs.La mise en place de ce type de gestion des exceptions peut souvent avoir un coût en matière de performances, alors utilisez-le avec parcimonie; les performances des Rules doivent être aussi optimales que possible. Une approche plus pragmatique consiste à concevoir le traitement de manière à éviter les exceptions plutôt qu’à les gérer une fois qu’elles se produisent. Pour en savoir plus sur les pratiques exemplaires, consultez Pratiques exemplaires en matière de performance.
Évitez les objets non initialisés dans les Rules
user.user_metadata = user.user_metadata || {})
Dans une Rule, prendre les mesures nécessaires pour éviter qu’une exception se produise dès le départ constitue une bonne pratique et coûte généralement moins cher en performance et en ressources que d’implémenter une gestion des exceptions.